多线程的应用在Android开发中是非常常见的,常用方法主要有:
继承Thread类实现Runnable接口AsyncTaskHandlerHandlerThreadIntentService今天,我将手把手教你使用IntentService(含实例介绍)。
Android里的一个封装类,继承四大组件之一的Service
处理异步请求 & 实现多线程
线程任务 需 按顺序、在后台执行
最常见的场景:离线下载不符合多个数据同时请求的场景:所有的任务都在同一个Thread looper里执行步骤1:定义 IntentService的子类,需复写onHandleIntent()方法 步骤2:在Manifest.xml中注册服务 步骤3:在Activity中开启Service服务
传入线程名称、复写onHandleIntent()方法
public class myIntentService extends IntentService { /** * 在构造函数中传入线程名字 **/ public myIntentService() { // 调用父类的构造函数 // 参数 = 工作线程的名字 super("myIntentService"); } /** * 复写onHandleIntent()方法 * 根据 Intent实现 耗时任务 操作 **/ @Override protected void onHandleIntent(Intent intent) { // 根据 Intent的不同,进行不同的事务处理 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(); } }此处主要讲解IntentService与四大组件Service、普通线程的区别。