我正在开发一个与服务器上的视频同步的应用程序。它启动一个下载播放列表的IntentService,将其插入数据库,然后将实际的视频文件下载到SD卡。
我在启动服务时使用通过意图传递的信使来回复已经下载了多少%。
我工作但很明显当活动被破坏并重新开始时,信使不会重新连接。
这个问题的解决方案是什么,引导我走向正确的方向。感谢
答案 0 :(得分:1)
如果要使用信使,则需要保留对使用传递给意向服务的信使创建的处理程序的引用。
如果活动被销毁并重新创建,该处理程序仍然绑定到上一个活动(这也可能导致泄漏)。
一种方法可能是在单例对象内或应用程序对象内引用该处理程序。
但是,由于intentservices的异步性质,我要做的是通过广播通知进度,因此新活动可以注册到intentservice抛出的同一个广播。您永远不知道该服务是否仍然存在或已完成其工作。
使用localbroadcasts可能会带来更有效的解决方案。