重新启动活动时,从Intent Service重新连接Messenger

时间:2013-03-10 18:41:53

标签: android android-activity restart intentservice messenger

我正在开发一个与服务器上的视频同步的应用程序。它启动一个下载播放列表的IntentService,将其插入数据库,然后将实际的视频文件下载到SD卡。

我在启动服务时使用通过意图传递的信使来回复已经下载了多少%。

我工作但很明显当活动被破坏并重新开始时,信使不会重新连接。

这个问题的解决方案是什么,引导我走向正确的方向。感谢

1 个答案:

答案 0 :(得分:1)

如果要使用信使,则需要保留对使用传递给意向服务的信使创建的处理程序的引用。

如果活动被销毁并重新创建,该处理程序仍然绑定到上一个活动(这也可能导致泄漏)。

一种方法可能是在单例对象内或应用程序对象内引用该处理程序。

但是,由于intentservices的异步性质,我要做的是通过广播通知进度,因此新活动可以注册到intentservice抛出的同一个广播。您永远不知道该服务是否仍然存在或已完成其工作。

使用localbroadcasts可能会带来更有效的解决方案。