IntentService与Service的比较
IntentService与Service的比较
《Android疯狂讲义》中:
一、IntentService简介
IntentService是Service的子类,比普通的Service增加了额外的功能。先看Service本身存在两个问题:
-
Service不会专门启动一条单独的进程,Service与它所在应用位于同一个进程中;
-
Service也不是专门一条新线程,因此不应该在Service中直接处理耗时的任务;
二、IntentService特征
-
会创建独立的worker线程来处理所有的Intent请求;
-
会创建独立的worker线程来处理onHandleIntent()方法实现的代码,无需处理多线程问题;
-
所有请求处理完成后,IntentService会自动停止,无需调用stopSelf()方法停止Service;
-
为Service的onBind()提供默认实现,返回null;
-
为Service的onStartCommand提供默认实现,将请求Intent添加到队列中;
也就是:
1.service不是单独的进程,也不是单独的线程,依附于启动它的进程,是运行在主线程中的所以不能有耗时操作。
IntentService中会单独开启线程处理,不会堵塞主线程。需要实现onHandleIntent的方法,这个方法也是Service中没有的。
2.自定义的Service要继承Service。onStartCommand和onBind有必要时要重写。自定义的IntentService要继承IntentService。
3.IntentService和Service都需要在AndroidManifest.xml文件中注册。
MissR:stay