Android Service VS AsyncTask VS Thread
这三种方式的设计目的是不同的。
Service: 适用于在后台长期持续运行的动作,如:播放音乐,查看网络数据。注意,在开发文档中,service本身是在UI线程中,所以所需的操作应该创建一个新的线程来完成工作。
AsyncTask:主要用于防止阻塞UI线程的一次性/短暂动作。例如:点击button后获取网络数据,这里AsyncTask比较合适。因为受到数据后动作完成结束。而用service也可以完成工作,但是随后要关闭service,时低效的。
Thread:就是通常意义的线程,注意在线程中不能更新UI。因为UI框架本身是非线程安全的。但android提供了如下方法更新UI。
eg:
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
final Bitmap bitmap = loadImageFromNetwork("http://example.com/image.png");
mImageView.post(new Runnable() {
public void run() {
mImageView.setImageBitmap(bitmap);
}
});
}
}).start();
}
详见官方文档:http://developer.android.com/guide/components/processes-and-threads.html