Service-IntentService集成异步线程(2)
2014-05-01 16:00
288 查看
执行耗时操作的服务对界面会阻塞界面的操作。新开的线程在服务关闭后还会执行,造成了
代码复杂。系统提供了IntentService来解决这个问题,即耗时操作只需要放在该类的onHandleIntent()中即可;
1.继承IntentService:
2.在xml文件中配置
3.调用startService(Intent);
运行如下:
分析如下:
IntentService启动调用onCreate();该方法创建了一个HandlerThread;
执行onStartCommand()时,从线程队列中取出一条线程,并向线程发送消息,
在HandlerThread中的线程获取消息后,执行onHandleIntent。执行完后关闭Service,如下:
但总的来说。用户只需要在onStartCommand()中新开一条线程执行任务或者在
onHandleIntent()中执行耗时操作即可。
代码复杂。系统提供了IntentService来解决这个问题,即耗时操作只需要放在该类的onHandleIntent()中即可;
1.继承IntentService:
/** * @author linwb */ public class LeanIntentService extends IntentService { public LeanIntentService(){ super(""); } @Override public void onCreate() { super.onCreate(); Log.v("LeanLog", "onCreate PID= "+Process.myTid()); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.v("LeanLog", "onStartCommand PID= "+Process.myTid()); return super.onStartCommand(intent, flags, startId); } @Override protected void onHandleIntent(Intent arg0) { Log.v("LeanLog", "onHandleIntent PID= "+Process.myTid()); } }
2.在xml文件中配置
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <service android:name=".LeanIntentService"></service> <activity android:name="com.csz.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
3.调用startService(Intent);
Intent mServiceIntent=new Intent(MainActivity.this,LeanIntentService.class); startService(mServiceIntent);
运行如下:
分析如下:
IntentService启动调用onCreate();该方法创建了一个HandlerThread;
执行onStartCommand()时,从线程队列中取出一条线程,并向线程发送消息,
在HandlerThread中的线程获取消息后,执行onHandleIntent。执行完后关闭Service,如下:
但总的来说。用户只需要在onStartCommand()中新开一条线程执行任务或者在
onHandleIntent()中执行耗时操作即可。
相关文章推荐
- Service学习——第五篇 使用IntentService在单独线程上执行异步任务
- 线程相关——HandlerThread、IntentService、ResultReceiver:结果接收者、AsyncTask:异步任务、Android中处理线程间通信的方式
- 一、概述 EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间
- Android异步相关-AsyncTask/HandlerThread/IntentService
- Android中Services之异步IntentService
- android 线程(AsyncTask,Threadhandler,intentService)详解
- Android中Services之异步IntentService
- Android使用IntentService执行异步任务
- Android Service跟线程及IntentService使用
- Android异步加载全解析之IntentService
- Android 的线程(AsyncTask、HandlerThread、IntentService详解)和线程池
- Android(java)学习笔记210:Android线程形态之 IntentService
- android 进程/线程管理(三)----Thread,Looper / HandlerThread / IntentService
- Android中Services之异步IntentService(二)
- Android中Services之异步IntentService
- Android线程IntentService源码分析
- Android 的线程(AsyncTask、HandlerThread、IntentService详解)和线程池
- Android 中的线程形态 -- AsyncTask,HandlerThread,IntentService
- Android:线程间通讯、Handler、Looper、IntentService、自定义消息队列
- Service的异步版本IntentService: