android之IntentService(转)

android之IntentService(转)

什么是IntentService?简单来说IntentService就是一个含有自身消息循环的Service,首先它是一个service,所以service相关具有的特性他都有,同时他还有一些自身的属性,其内部封装了一个消息队列和一个HandlerThread,在其具体的抽象方法:onHandleIntent方法是运行在其消息队列线程中,废话不多说,我们来看其简单的使用方法:

  • 定义一个IntentService
1
2
3
4
5
6
7
8
9
10
11
12
public class MIntentService extends IntentService{

public MIntentService() {
super("");
}

@Override
protected void onHandleIntent(Intent intent) {
Log.i("tag", intent.getStringExtra("params") + " " + Thread.currentThread().getId());
}

}
  • 在androidManifest.xml中定义service
1
2
3
<service
android:name=".MIntentService"
/>
  • 启动这个service
1
2
3
4
5
6
7
8
title.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, MIntentService.class);
intent.putExtra("params", "ceshi");
startService(intent);
}
});

可以发现当点击title组件的时候,service接收到了消息并打印出了传递过去的intent参数,同时显示onHandlerIntent方法执行的线程ID并非主线程,这是为什么呢?


:D 一言句子获取中...