看了Android面试一天一题(1 Day),对Service 的一些总结与思考
作者原文章链接: http://www.jianshu.com/p/7a7db9f8692d
作者用几个简短的问题已经问到了service 的精华; 读完以后根据自己的理解/先前的项目经验进行了一些总结以及延伸,如有错误的地方,请大家指正。
1. 前台UI(Activity ) 与后台任务之间的执行情况可以分为以下三种情景:
(1): UI 退出,后台任务退出。像此种情况采用Thread 或者AsyncTask 实现后台加载任务就可以
(2): UI 退出,后台任务不退出;UI重新启动时,两者不需要同步进度信息。这种情况可以考虑用Service 实现后台任务的执行,不用考虑Service 与UI的通信问题
(3):UI 退出,后台任务不退出;当UI重新启动时,后台Service 需要与前台UI同步进度等相关信息。此种情况需要考虑状态的保存恢复以及Service 与 UI通信问题
2. 对于后台Service,如果业务需求要求Service 的生命周期和应用进程生命周期一样;可以考虑用静态实例类的方案来代替Service 的方案
3. IntentService 底层实现异步任务加载的机制适用于不需要并发执行的环境;但是对于后台需要同时执行多个任务的情况,还是采用Service + 线程池的方案比较合适,例如音乐App后台下载MP3 文件处理的任务。