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

原创 2017年01月03日 16:00:38

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



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【Android】关于Service中的耗时操作

原文链接:http://blog.csdn.net/zartzwj/article/details/20864497 由于Service和Broadcast一样,都运行在主线程中,所以在这两个里...

关于Service中的耗时操作

由于Service和Broadcast一样,都运行在主线程中,所以在这两个里面我们无法做一些长时间的耗时操作,也就是说,如果我们有一个后台服务,是每隔一段时间请求一次服务器,类似于心跳服务,只是没有心...

Service是否在mainThread中执行,service里面是否能执行耗时操作

感谢飞龙哥,大海老师, 红康老师,福仔技术支持

service是否在main thread中执行, service里面是否能执行耗时的操作?

service

Butter Knife的使用

超方便的开源框架使用,省去了我们不停findViewById的过程,步骤如下: 首先,打开Android Studio的File->Project Structure 点击左边菜单栏的app选...

人生的抉择-创业纪录片(二)-起步期

开篇        几天前,我写过一篇分享自己当时创业的抉择和创业的基础后,引起了很多朋友的支持和意见,其中有很多很受启发的评论和建议,首先感谢大家看我在这里唠 叨半天,我最近由于手头...

监控自己APP的http/https网络请求的地址和请求耗时

关于监控http/https网络请求的思路, 目前想到两种实现思路:第一种实现思路是hook http请求的根接口, 第二种实现思路是aop/动态代理.

Android面试题-Service是否在main thread中执行, service里面是否能执行耗时的操作?

Android面试题-Service是否在main thread中执行, service里面是否能执行耗时的操作?

Android中Service中是否能做耗时操作,两种启动模式与服务不被杀死的方法

1.在Service中,一般情况下都是不能在Service中耗时操作的,但是可以在mainifest中设置属性progress,这样我们就可以做耗时操作了。 2.Service的两种启动模式: 第一种...

关于Service中的耗时操作

由于Service和Broadcast一样,都运行在主线程中,所以在这两个里面我们无法做一些长时间的耗时操作,也就是说,如果我们有一个后台服务,是每隔一段时间请求一次服务器,类似于心跳服务,只是没有心...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)