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 此處省略具體實現
}
}
}
分享到:
相关推荐
如果你要反复执行一个任务,用不同的数据集(参数不同),但一次只要一个执行(任务是单线程的),...能被多线程访问的变量需要同步块.更多信息,见Processes and Threads(http://developer.android.com/guide/component
Android中的Service是用于后台服务的,当应用程序被挂到后台的时候,问了保证应用某些组件仍然可以工作而引入了Service这个概念,那么这里面要强调的是Service不是独立的进程,也不是独立的线程,它是依赖于应用程序...
不过,这里并不是直接使用Service类,而是使用的是继承自Service的IntentService。 这个东西有三大好处: 1.他有个任务队列; 2.任务队列执行完后会自动停止; 3.他会起一个独立的线程,耗时操作不会影响你app的...
最近就这个问题,阅读了很多代码以及官方文档,下面就说下最近都尝试过的方式,可能其中有些您实现了,我这边没实现,望见谅。本文采用的高德定位。 一、PowerManager.WakeLock (1)直接强制当前页面cpu运行 ...
多线程编程之所以复杂原因之一在于其并行的特性,人脑的工作方式更符合单线程串行的特点。一个接着一个的处理任务是大脑最舒服的状态,频繁的在任务之间切换会产生“头痛”这类系统异常。人脑的多任务和计算机的多...
2.2 Android中的多进程模式 36 2.2.1 开启多进程模式 36 2.2.2 多进程模式的运行机制 39 2.3 IPC基础概念介绍 42 2.3.1 Serializable接口 42 2.3.2 Parcelable接口 45 2.3.3 Binder 47 2.4 Android中的IPC...
11.1.5 解决多线程问题 11.1.6 有趣的超时 11.1.7 使用HttpURLConnection 11.1.8 使用AndroidHttpClient 11.1.9 使用后台线程(AsyncTask) 11.1.10 使用AsyncTask处理配置更改 11.1.11 使用...
文章共有10个段落,涉及的内容有:多线程并发的性能问题,介绍了AsyncTask、HandlerThread、IntentService与ThreadPool分别适合的使用场景以及各自的使用注意事项。这是一篇了解Android多线程编程不可多得的基础文章...
2.2 Android中的多进程模式 / 36 2.2.1 开启多进程模式 / 36 2.2.2 多进程模式的运行机制 / 39 2.3 IPC基础概念介绍 / 42 2.3.1 Serializable接口 / 42 2.3.2 Parcelable接口 / 45 2.3.3 Binder / 47 ...
11.1.5 解决多线程问题 11.1.6 有趣的超时 11.1.7 使用HttpURLConnection 11.1.8 使用AndroidHttpClient 11.1.9 使用后台线程(AsyncTask) 11.1.10 使用AsyncTask处理配置更改 11.1.11 使用...
本课讲的是如何实现一个Runnable,在一个独立线程上运行Runnable....这个类可以自动管理线程和任务队列,甚至可以并行执行多线程。 定义一个实现Runnable接口的类 代码如下: public class PhotoDecodeRunnable implemen
介绍android 异步任务不可多得的好书,主要介绍了AsyncTask, handler,looper,loader,IntentService,AlarmManager等
多线程 Thread AsyncTask IntentService HandlerThread ThreadPoolExecutor 多进程 Socket 网络编程 WebView 数据存储技术 多媒体 音频 视频 摄像头 位置与传感器 位置服务 其它传感器 硬件连接 蓝牙 NFC ...
service作为四大组件值得我们的更多的关注 在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务。例如,一个从service播放音乐的音乐播放器,应被设置为前台运行,因为用户会明确地...
service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务总是藏在后台的,...