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

不可以。

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

猜你喜欢

转载自blog.csdn.net/Chen_dSir/article/details/81293187