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一样,都运行在主线程中,所以在这两个里...

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

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

关于Service中的耗时操作

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

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

感谢飞龙哥,大海老师, 红康老师,福仔技术支持
  • Hi_AndG
  • Hi_AndG
  • 2016年12月10日 10:23
  • 699

使用IntentService在Service中创建耗时任务

IntentService是Service的子类,比普通的Service增加了额外的功能。 Service存在两个问题: 1,Service不会专门启动一条单独的线程,Service与它所在应用访问者...

关于Android Service真正的完全详解,你需要知道的一切

Service 1.Service基础知识概述   Service(服务)是一个一种可以在后台执行长时间运行操作而没有用户界面的应用组件。服务可由其他应用组件启动(如Activity),服务一...

四大组件之——service应用实例一(在后台执行定时任务)

Service是android中实现程序后台运行的解决方案,适合于执行那些不需要和用户交互且要求长期执行的任务,Service有以下几个特点: 1.service运行在后台,前台看不到 2.servi...

在Android Service中使用AsyncTask执行任务

public class MyService extends Service { @Override public void onCreate() { super.on...

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

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

Android核心基础-6.Android 耗时操作

1.什么是ANR 在应用程序的主线程中执行一段耗时的代码, 就有可能出现ANR异常. 耗时的代码未执行结束时, 界面会卡住, 用户对界面进行了操作, 10秒之后耗时代码如果还未结束, 就会出现ANR异...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Service中是否可以执行耗时操作
举报原因:
原因补充:

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