我知道一个Activity可以创建一个intent并将它发送给IntentService。
我知道已完成请求的IntentService可以将消息发送回调用活动。
我知道从IntentService发送到调用Activity的Message可以包含一个Bundle [setData(Bundle b);]
问题:从IntentService发送到调用Activity的Message是否包含任意大小的Bundle / Cursor(假设有169条记录)?
答案 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()时,都会使用最新数据重新加载视图。