service和后台线程的区别
来源:互联网 发布:linux删除子网卡 命令 编辑:程序博客网 时间:2024/06/06 08:48
很多人在遇到耗时操作引起的UI阻塞时都会问这样一个问题,何时使用service何时开一个后台线程来解决耗时操作问题。其实这句话本身就有误导,因为它默认了service和后台线程之间是互斥的。
首先,Android的主线程是在一个应用启动时而开启的单一线程,这个线程就被称为主线程或UI线程。需要注意的是UI线程并不只执行UI任务,所以我更愿意称它为主线程。而在执行其他任务时,它也负责启动application,比如调用application的onStart()方法。而被称为UI线程的理由也是因为耗时操作会阻塞用户界面,基于这个原因耗时操作应当在主线程之外的线程执行。
然后,后台线程和其他java程序一样,实现runnable传入thread执行,问题在于这个线程应当在哪里进行管理:activitiy的生命周期内和application的生命周期内。
Android的初学者普遍认为service是运行在不同的线程因为它被专门设计来执行后台任务。其实并非如此,默认地service将会在主线程被调用,而混淆的原因在于主线程常被称为UI线程而service应运行在后台。
最后,如果需要在service里面执行复杂的任务需要新起工作线程。也就是说,service不是一个可选的后台线程而仅仅提供了另外一个生命周期来运行工作线程。service的生命周期和前面所提的两个不同,service的使用场景是:1 该线程应当一直存活即使用户已经不会再有用户交互了。 2 其他应用使用intent启动该service。
http://cogitolearning.co.uk/?p=780
0 0
- service和后台线程的区别
- 前台线程和后台线程的区别
- 前台线程和后台线程的区别
- 前台线程和后台线程的区别
- 线程和Service区别
- android service和线程的用法区别
- c#前台线程与后台线程的区别和联系
- .Net中后台线程和前台线程的区别
- C#中前台线程和后台线程的区别
- c#前台线程与后台线程的区别和联系
- c#前台线程与后台线程的区别和联系
- c#前台线程与后台线程的区别和联系
- c#前台线程与后台线程的区别和联系
- Start Service 和 Bound Service, 两者的区别, 以及和线程进程的区别
- 前台线程与后台线程的区别
- 前台线程与后台线程的区别
- 前台线程和后台线程的问题
- 线程的合并和后台线程
- 管理中如何避免民主暴政--团队要分成两个大等级:为荣誉v&s为活着两个等级
- 浅谈weblogic和tomcat
- 20个Linux系统内置监视工具:top
- Hello World! Linux Ubuntu 搭建 Nginx + Nodejs + Ghost 博客
- android硬件加速
- service和后台线程的区别
- Asp.net,C# —两种对称加密类实例学习
- leetcode 实现两个int整数相除(不用乘除,取余)
- ace bootstrap后台框架-面包屑
- android 仿qq5.3,下拉刷新,自动加载更多,下拉回弹,仿IOS橡皮筋效果,通用版,效果完美
- 底子薄之11.29
- Xamarin.Android中使用android:onClick="xxx"属性
- iOS之XMPP简介
- 手机web——自适应网页设计(html/css控制)