关闭

Service中是否可以执行耗时操作

标签: AndroidServiceIntentService线程Service耗时操作
1549人阅读 评论(0) 收藏 举报
分类:

参照文章: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请求
传入该函数来处理其所对应的任务。



1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1802次
    • 积分:39
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档