【发布时间】:2012-01-31 22:58:29
【问题描述】:
在我的 Android 应用程序中,我有一个带有适配器的简单列表视图。有一个繁重的查询是用数据填充列表视图。所以我把它放到另一个线程中运行的 IntentService 中。
IntentService 通常单独运行,单独运行,只是为了查询一些数据并将其插入 SQLite 数据库。
但现在我想有以下可能:
- Activity 使用 startService() 启动 IntentService。
- IntentService 完成了繁重的工作。
- IntentService 完成后,应将结果通知 Activity,以便刷新 Activity 以显示新数据。
这可能吗?我在 Stack Overflow 上阅读了很多关于这个主题的问题。但在每一个问题中,都有另一种解决方案。所以我想问大家:哪种解决方案最适合我的目的?
- 将 IntentService 绑定到 Activity 似乎不是最佳解决方案,因为可能与 Activity 的配置更改等发生冲突。对吗?
- This blog post 建议将 AIDL 与 Parcelables 一起使用——这对我来说听起来很复杂。有更简单的方法,不是吗?
- 可以在 Activity 中设置广播接收器,并在完成后在 IntentService 中触发此广播。
- 有人说你应该use createPendingResult() to pass a PendingIntent 到 IntentService。如果 IntentService 在其 extras 中发现 PendingIntent,它会使用它来触发 Activity 中的 onActivityResult()。这是选择的方式吗?
【问题讨论】:
标签: android multithreading android-intent broadcastreceiver android-activity