IntentService
2020-04-29 本文已影响0人
卡路fly
-
IntentService 是继承自 Service 并处理异步请求的一个类,在 IntentService 内有一个工作线程来处理耗时操作,当任务执行完后,IntentService 会自动停止,不需要我们去手动结束。
-
如果启动 IntentService 多次,那么每一个耗时操作会以工作队列的方式在 IntentService 的 onHandleIntent 回调方法中执行,依次去执行,执行完自动结束。
正常来讲,一个服务可写成这样
public class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
new Thread(new Runnable() {
@Override
public void run() {
// do something耗时
}
}).start();
return super.onStartCommand(intent, flags, startId);
}
......
}
这种服务一旦启动就会处于运行状态,必须调用stopService或者stopSelf停止,如果想要实现执行完毕自动停止功能,可以写成
public class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
new Thread(new Runnable() {
@Override
public void run() {
// do something耗时
stopSelf();
}
}).start();
return super.onStartCommand(intent, flags, startId);
}
......
}
为了简化这种start、stop操作,Android提供了IntentService类。
- 必须在内部调用父类有参构造函数
- 子类实现onHandleIntent,处理具体逻辑
public class MyIntentService extends IntentService {
public MyIntentService() {
// 1. 必须在内部调用父类有参构造函数
super("MyIntentService");
}
@Override
protected void onHandleIntent(@Nullable Intent intent) {
// 2. 子类实现onHandleIntent,处理具体逻辑
}
}