美文网首页
Service可以执行耗时操作吗

Service可以执行耗时操作吗

作者: 茴香豆的第五种写法 | 来源:发表于2017-11-03 10:27 被阅读0次

    不可以。

    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请求

    传入该函数来处理其所对应的任务。

    相关文章

      网友评论

          本文标题:Service可以执行耗时操作吗

          本文链接:https://www.haomeiwen.com/subject/nobkpxtx.html