**
1.用法解析
**
IntentService是Service的子类,会默认开启一个工作线程,逐一处理所有请求,直到所有请求都处理完成后,自动停止服务,无需再手动进行停止。
只需要实现onHandleIntent即可。
public class TestIntentService extends IntentService {
private static final String TAG = “TestIntentService”;
/**
* Creates an IntentService. Invoked by your subclass\'s constructor.
*
* @param name Used to name the worker thread, important only for debugging.
*/
public TestIntentService(String name) {
super(name);
}
public TestIntentService() {
super(\"TestIntentService\");
}
@Override
public void onCreate() {
super.onCreate();
Log.e(TAG, \"onCreate--\" + Thread.currentThread().getName());
}
@Override
public void onDestroy() {
super.onDestroy();
Log.e(TAG, \"onDestroy\");
}
@Override
protected void onHandleIntent(@Nullable Intent intent) {
Log.e(TAG, \"onHandleIntent--\" + Thread.currentThread().getName());
}
}
在活动中启动IntetnService。
private void startIntentService() {
Intent intent = new Intent(this, TestIntentService.class);
startService(intent);
}
startIntentService();
startIntentService();
startIntentService();
打印日志如下:
通过日志,可发现,在IntentService中,onHandleIntent处于独立的工作线程中,所有任务完成后,会自动停止,无需再手动关闭服务。
2.核心源码
IntentService会在onCreate中创建新线程,获得looper后,传入handle中,通过消息传输,在handleMessage完成任务,完成后调用stopSelf()。
同时首次创建服务时,才会调用onCreate()。如果服务已在运行,则不会调用此方法,该方法只调用一次,保证任务结束前不会重复新建。
@Override
public void onCreate() {
// TODO: It would be nice to have an option to hold a partial wakelock
// during processing, and to have a static startService(Context, Intent)
// method that would launch the service & hand off a wakelock.
super.onCreate();
HandlerThread thread = new HandlerThread(\"IntentService[\" + mName + \"]\");
thread.start();
mServiceLooper = thread.getLooper();
mServiceHandler = new ServiceHandler(mServiceLooper);
}
private final class ServiceHandler extends Handler {
public ServiceHandler(Looper looper) {
super(looper);
}
@Override
public void handleMessage(Message msg) {
onHandleIntent((Intent)msg.obj);
stopSelf(msg.arg1);
}
}
继续阅读与本文标签相同的文章
企业需要建设网站该如何咨询价格呢?
CDN新品发布:阿里云SCDN安全加速开放公测
-
新能力丨困扰商家已久的“分账问题”终于被解决了!
2026-05-18栏目: 教程
-
在线PDF加密,你的隐私你做主!
2026-05-18栏目: 教程
-
浅谈物联网用户体验目标的变化
2026-05-18栏目: 教程
-
Linux基础命令---host域名查询工具
2026-05-18栏目: 教程
-
Apache Flink Meetup 北京站,可能有你最想听的技术干货!
2026-05-18栏目: 教程
