【问题标题】:android updating UI with service in a separate processandroid在单独的进程中使用服务更新UI
【发布时间】:2014-09-10 05:40:16
【问题描述】:

目前,我正在使用服务在后台工作并相应地定期更新 UI 该服务每 30 秒触发一次 为了避免挂起 UI 请求……我为它指定了一个单独的进程,添加了以下内容。

android:process=":remote"

但是,在这种情况下,我的 UI 停止更新。 需要解决这个问题。

【问题讨论】:

  • 你可以在你的服务中使用线程。

标签: android user-interface process android-service


【解决方案1】:

您可以在您的活动中以编程方式注册一个BroadcastReceiver,以从服务中获取数据并更新 UI。您可能还想在 onResume() 方法中更新 UI,以防 Activity 因任何原因暂停然后被带到前面。

别忘了你必须在 UI 线程中更新你的视图,否则会抛出异常。

如果服务工作只与 UI 更新相关,您可以考虑在同一个 Activity 中使用 Timer/TimerTask 或 Thread 以简化流程。

编辑:如果您正在使用 Web 服务,请考虑使用单个 AsyncTask 来执行 doInBackground(...),并在 publishProgress(...)

中更新

希望对你有帮助。

【讨论】:

  • 我正在更新我的 onResume 中的 UI。如果用户站在屏幕上,只需要定期更新数据。
  • 我的服务正在做 2 件事 - 1) 触发 Web 请求以获取特定数据,2) 使用它更新 UI。
  • 是的,我的服务中有一个异步任务并在 onPostExecute 中更新 UI
  • 您需要做的是在您的活动中创建 AsyncTask。创建一个无限循环 while(true){},然后获取您的数据并每 30 秒更新一次 UI。在你的活动中做这一切。
  • 我有很多活动...我想在其中更新我的数据...那么,我应该在所有活动中都使用 Asynctask 吗?
猜你喜欢
  • 1970-01-01
  • 2014-04-26
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多