Android IntentService将数据提供回Activity

bon*_*ond 4 binding android callback listactivity

我有一个活动(ListActivity),其中如果用户点击按钮,我启动一个意图"IntentService",它基本上对Web服务进行REST调用并收集数据.我的问题是,一旦服务完成,我填充Activity中的项目列表,这只是一个静态var.但是,我无法启动listadaptor,要求它在数据发生变化时刷新视图.有人能告诉我,当IntentService完成任务时,我怎么能"通知"活动刷新?

kar*_*rni 9

如果您正在进行REST调用,我建议您使用IntentService而不是AsyncTask.AsyncTask看起来不错而且非常有用,但它需要注意不要泄漏上下文并将结果返回给一个可能早已消失的Activity,这使得正确使用它并不容易.

请观看此演示文稿以获取非常有用的指导

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

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

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

getListView().setAdapter(adapter)
Run Code Online (Sandbox Code Playgroud)

但你会更好,CursorAdapter只是打电话

context.getContentResolver().notifyChange(uri, null);
Run Code Online (Sandbox Code Playgroud)

其中context是IntentService的Context.

希望有所帮助!