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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。