Android:SQLite:使用IntentService查询的数据加载视图

时间:2013-04-30 01:15:15

标签: android android-intent cursor bundle intentservice

我知道一个Activity可以创建一个intent并将它发送给IntentService。

我知道已完成请求的IntentService可以将消息发送回调用活动。

我知道从IntentService发送到调用Activity的Message可以包含一个Bundle [setData(Bundle b);]

问题:从IntentService发送到调用Activity的Message是否包含任意大小的Bundle / Cursor(假设有169条记录)?

2 个答案:

答案 0 :(得分:0)

光标不是Parcelable ...所以它可能不能作为Bundle的一部分传递。

通常,模式是让IntentService修改共享模型(可能是数据库甚至是完整的内容提供者)中的记录,然后活动通过在该模型中设置为感兴趣的Uris的Loaders来观察。

不,使用带游标的加载器并不一定意味着您必须编写内容提供程序,但如果您这样做,它确实有用。

答案 1 :(得分:-1)

我能够找到一种方法,使用此article从另一个线程将数据传输到我的ListView。

现在我可以从查询SQLite数据库加载我的视图并从我的活动视图中获取用户输入,并使用相同的IntentService将数据插入到SQLite数据库中(SQLite数据库中每个表一个IntentService,不包括自定义触发器类) [与同一个表关联的所有活动使用相同的IntentService])!

当IntentService使用Message类响应调用Activity时,我填充了一个包含Serializable二维数组的Bundle的消息[Bundle.putSerializable(“Label”, 2DArray )]返回来自SQLite数据库查询。

在Activity中,数组转换为包含带有两个字段的自定义类的数组,然后绑定到自定义ArrayAdapter。

通知符不是必需的,因为每次调用Activity.onResume()时,都会使用最新数据重新加载视图。