Android IntentService 将数据返回给 Activity

标签 android binding callback listactivity

我有一个 Activity (ListActivity),如果用户点击一个按钮,我会启动一个“IntentService”的 Intent ,它基本上对 Web 服务进行 REST 调用并收集数据。 我的问题是,一旦服务完成,我就会在 Activity 中填充项目列表,这只是一个静态变量。但是,我无法启动 listadaptor 以要求它在数据更改时刷新 View 。有人能告诉我如何在 IntentService 完成任务后“通知” Activity 刷新吗?

最佳答案

如果您正在进行 REST 调用,我建议您使用 IntentService 而不是 AsyncTask。 AsyncTask 看起来不错而且很有用,但需要格外小心,不要泄漏上下文并将结果返回到可能早已消失的 Activity,这使得它不太容易正确使用。

请观看此演示文稿以获得非常有用的指南:

http://www.youtube.com/watch?v=xHXn3Kg2IQE

编辑: 至于发回结果,您可以包含一个包裹 ResultReceiver在您启动 IntentService 的 Intent 中,并使用 .send() 通知 Activity(并在那里处理适配器刷新)

至于刷新 ListAdapter,这实际上取决于您使用的是哪种类型。如果它是一个简单的适配器,您可以使用

getListView().setAdapter(adapter)

但使用 CursorAdapter 会好很多并简单地调用

context.getContentResolver().notifyChange(uri, null);

其中上下文是您的 IntentService 的上下文。

希望对您有所帮助!

关于Android IntentService 将数据返回给 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5684261/

相关文章:

android - 在协程范围内调用时启动未执行

安卓服务交互

c# - Xamarin.Forms:如何避免在 MVVM 绑定(bind)中对字符串进行硬编码

sqlite 查询 - 如何从按范围过滤的单行中获取多个结果?

java - 在后面,在不延迟主线程的情况下终止 Activity

Android 如何将 XML 布局转换为 PDF?

android - Butterknife 无法在我的适配器类中绑定(bind)

ruby - 在 Ruby 中,binging.pry 被跳过

javascript - 异步队列,文件流结束如何知道两者何时完成

c - 如何在读写器多线程程序中设置回调