@[toc]android
IntentService 是继承于Service,用于处理异步请求,实现多线程的一个类。bash
如何使用:多线程
步骤1:定义IntentService的子类:传入线程名称、复写onHandleIntent()方法app
package com.example.administrator.test;
import android.app.IntentService;
import android.content.Intent;
import android.util.Log;
public class myIntentService extends IntentService {
public myIntentService() {
//构造函数参数=工做线程的名字
super("myIntentService");
}
/*复写onHandleIntent()方法*/
//实现耗时任务的操做
@Override
protected void onHandleIntent(Intent intent) {
//不一样的事务用不一样的ntent标记
String taskName = intent.getExtras().getString("taskName");
switch (taskName) {
case "task1":
Log.i("myIntentService", "do task1");
break;
case "task2":
Log.i("myIntentService", "do task2");
break;
default:
break;
}
}
@Override
public void onCreate() {
Log.i("myIntentService", "onCreate");
super.onCreate();
}
/*复写onStartCommand()方法*/
//默认实现将请求的Intent添加到工做队列里
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("myIntentService", "onStartCommand");
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
Log.i("myIntentService", "onDestroy");
super.onDestroy();
}
}
复制代码
步骤2:在Manifest.xml中注册服务异步
<service android:name=".myIntentService"/>
复制代码
步骤3:在Activity中开启Service服务ide
package com.example.administrator.test;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//同一服务只会开启一个工做线程
//在onHandleIntent函数里依次处理intent请求。
Intent i = new Intent("cn.scu.finch");
Bundle bundle = new Bundle();
bundle.putString("taskName", "task1");
i.putExtras(bundle);
startService(i);
Intent i2 = new Intent("cn.scu.finch");
Bundle bundle2 = new Bundle();
bundle2.putString("taskName", "task2");
i2.putExtras(bundle2);
startService(i2);
startService(i); //屡次启动
}
}
复制代码
为什么能成: 由于IntentService本质 = Handler + HandlerThread:函数
(1)经过HandlerThread 单独开启1个工做线程oop
(2)该线程继承了Thread,封装了Looperui
(3)建立1个内部 Handler :ServiceHandlerspa
(4)绑定 ServiceHandler 与 Looper
(5)经过 onStartCommand() 传递服务intent 到ServiceHandler 、依次插入Intent到工做队列中 & 逐个发送给 onHandleIntent()
(6)经过onHandleIntent() 依次处理全部Intent对象所对应的任务
- 咱们正在招募小伙伴,有兴趣的小伙伴能够把简历发到 app@talkmoney.cn,备注:来自简书社区
- 详情能够戳这里--> 广州芦苇信息科技