Android Service VS AsyncTask VS Thread

來源:互聯網
上載者:User

標籤:android   http   ar   os   java   sp   資料   on   art   

這三種方式的設計目的是不同的。

Service: 適用於在後台長期持續啟動並執行動作,如:播放音樂,查看網路資料。注意,在開發文檔中,service本身是在UI線程中,所以所需的操作應該建立一個新的線程來完成工作。

AsyncTask:主要用於防止阻塞UI線程的一次性/短暫動作。例如:點擊button後擷取網路資料,這裡AsyncTask比較合適。因為受到資料後動作完成結束。而用service也可以完成工作,但是隨後要關閉service,時低效的。

Thread:就是通常意義的線程,注意線上程中不能更新UI。因為UI架構本身是非安全執行緒的。但android提供了如下方法更新UI。

  • Activity.runOnUiThread(Runnable)
  • View.post(Runnable)
  • View.postDelayed(Runnable, long)

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

Android Service VS AsyncTask VS Thread

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.