android IntentService 简单介绍
来源:互联网 发布:淘宝店详情图片尺寸 编辑:程序博客网 时间:2024/06/06 14:12
IntentService 是Service类的子类,用来处理异步请求。客户端可以通过startService(Intent)方法传递请求给IntentService。
下面分析下IntentService 执行过程:
IntentService的onCreate如下
@Override
public void onCreate() {
super.onCreate();
HandlerThread thread = new HandlerThread("IntentService[" + mName + "]");
thread.start();
mServiceLooper = thread.getLooper();
mServiceHandler = new ServiceHandler(mServiceLooper);
}
在onCreate过程中,创建了一个HandlerThread,也就是另外启动了一个独立线程,我们要处理的异步请求也会在这个线程中执行。
创建了一个ServiceHandler的实例mServiceHandler。serviceHandler源码如下:
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);
}
}
我们在startService时会执行service的onStart();下面看IntentService的onStart:
public void onStart(Intent intent, int startId) {
Message msg = mServiceHandler.obtainMessage();
msg.arg1 = startId;
msg.obj = intent;
mServiceHandler.sendMessage(msg);
}
这里我们可以看到使用mServiceHandler发了一个消息,在ServiceHandler的handleMessage中执行 onHandleIntent((Intent)msg.obj);
这里的onHandlerIntent()需要我们自己实现,因为mServiceHandler的looper对象为thread的mServiceLooper,所以我们的handlerMessage
执行在thread中。为什么说intentservice是顺序执行我们的任务的,是因为每次执行onstart最后都要执行onHandlerIntent,他们在同一线程中,而同一线程中,方法执行是有序的,只有前一个方法执行完了,才会执行下一个。
- android IntentService 简单介绍
- Android IntentService 简单使用
- IntentService介绍及简单应用
- IntentService介绍
- IntentService介绍
- Android IntentService
- Android intentService
- android IntentService
- Android IntentService
- Android Intentservice
- android intentService
- Android-IntentService
- Android-IntentService
- Android IntentService
- Android:IntentService
- Android IntentService
- Android IntentService
- 【android】IntentService
- 概率论与数理统计--参数估计
- Android HttpClient cookie的保存以及添加
- h5学习之调用手机底层硬件----加速度传感器和震动
- 第一天全天课
- web.xml配置详解
- android IntentService 简单介绍
- PHP中isset(变量)和直接判断变量的区别
- Java语言编码规范(Java Code Conventions)
- linux 删除文件里的标点符号
- iOS OC10_Block
- 有关复合的学习
- JAVA学习第十一天
- IOS-1-Objective-C-@property属性的使用及注意问题:@property(assign)int name;
- 获取设备的配置信息