Service生命周期,可以执行耗时操作吗?

参照文章:http://blog.csdn.net/hudashi/article/details/7986130


不可以。

Service和activity是运行在当前app所在的main thread(UI主线程)中的,而耗时操作(如:网络请求、拷贝数据、大文件)会阻塞主线程,给用户不好的体验。

Broadcase耗时操作为10秒,Activity耗时操作为5秒
Service耗时操作为20秒


如果需要在服务中进行耗时操作,可以选择IntentService,  IntentService是Service的子类,用来处理异步请求。
IntentService在onCreate()方法中通过HandlerThread单独开启一个线程来处理Intent请求对象所对应的任务,这样可以避免事务处理阻塞主线程。
onHandleIntent()函数针对Intent的不同进行不同的事务处理就可以,执行完一个Intent请求对象所对应的工作之后,如果没有新的Intent请求达到,则自动停止Service; 否则ServiceHandler会取得下一个Intent请求
传入该函数来处理其所对应的任务。



阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页