我有一个带有进度条的 Activity ,相同的 Activity 生成一个服务,该服务生成一个正在处理数据并且永不结束的线程,但它有周期,我想反射(reflect)这些周期的进度(结束while(true) 循环的每次迭代中的工作量 = 100% 然后刷新并相同)。我应该使用什么?
最佳答案
您有两个选择:
一个
将您的服务设为前台服务,然后您可以在通知区域显示进度条。要显示进度条,您可能需要查找 RemoteViews。这看起来像 Android Market,在通知栏中显示下载进度。
详情:
Running service in Foreground How to change Notification Layout
第二
这将更加涉及。您必须绑定(bind)该服务。文档 here会有帮助的。现在他们可能会说绑定(bind)服务不会长期存在,但这不是强制性的。
在这种情况下,您可以在服务中使用AsyncTask
(如果您没有使用,则代替线程)。在AsyncTask
的onProgressUpdate
方法中,您将把进度发布到Service,然后Service 将使用IPC 将其发布到实际 Activity 。以下为引用资料:
您可能需要 AIDL对于IPC
关于java - 如何从服务调用的线程更改 Activity 的进度条进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8633451/