IntentService继承自Service,用于异步处理通过startService(Intent intent)方法传递的Intent对象。
该Service根据需要启动
,通过实现onHandleIntent(Intent intent)方法,IntentService会在一个工作线程中,
按顺序处理每个Intent对象,直到当工作执行完毕自动销毁。
实例代码
1、启动服务
- Intent intent = new Intent("iteye.dyingbleed.DownloadService");
- intent.putExtra("url", url); //添加下载地址
- startService(intent);
2、配置AndroidManifest
3、新建DownloadService类,继承IntentService
- package lizhen.apk;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- import android.app.IntentService;
- import android.content.Intent;
- public class DownloadService extends IntentService {
- private ExecutorService pool;
- public DownloadService() {
- super("DownloadService");
- }
- @Override
- public void onCreate() {
- super.onCreate();
- pool = Executors.newCachedThreadPool();
- }
- @Override
- protected void onHandleIntent(Intent intent) {
- String url = intent.getStringExtra("url");
- pool.execute(new DownloadTask(url));
- }
- @Override
- public void onDestroy() {
- super.onDestroy();
- pool.shutdown();
- }
- private class DownloadTask implements Runnable {
- private final String url;
- public DownloadTask(String url) {
- this.url = url;
- }
- @Override
- public void run() {
- // TODO 此處省略具體實現
- }
- }
- }