一,写在前面
IntentService使用场景:需要在服务中执行耗时的任务,使用IntentService代替在Service中开启子线程。
HandlerThread:封装了Thread+Looper,但并没有封装Handler。它是一个线程,run方法中初始化了Looper对象,并开启消息循环。
IntentService:封装了HandlerThread+Handler的Service。
在阅读本篇文章前,建议先了解Handler机制的工作原理,本篇将不再对重复内容进行阐述。可参考文章
二,使用IntentService
直接上代码,IntentService是一个抽象类,首先创建一个它的子类:
public class MyIntentService extends IntentService {
public MyIntentService() {
super("MyIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
SystemClock.sleep(3000);
String stringExtra = intent.getStringExtra("key");
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd hh:MM:ss");
String time = format.format(new Date(System.currentTimeMillis()));
Log.e("wcc", "onHandleIntent _ " + stringExtra + ", time is " + time);
}
@Override
public void onCreate() {
super.onCreate();
Log.e("wcc", "onCreate");
}
@Override
public