當前位置:首頁 » 安卓系統 » android開啟線程

android開啟線程

發布時間: 2025-01-04 03:51:46

A. Android中的線程和線程池

一、除了Thread外,扮演線程角色的還有:AsyncTask和IntentService,同時HandlerThread也扮演特殊的線程。

      IntentService:內部採用HandlerThread來執行,像一個後台線程,同時是一個服務,不容易被系統殺死。

二、HandlerThread的run方法是一個無限循環

三、IntentService中任務是排隊執行的

四、AsyncTask 

1、Android1.6之前串悄段桐行執行任務,1.6時候採用線程池裡的並行,Android3.0開始又開始串列(為了避免並發錯誤),單任可以並行。

2、AsyncTask必須在UI線程調用(不過這個不是絕對的,和版本有關燃腔系,API 16之前,API 16到 22, API 22以後) 參考一

原因:內部有靜態Handler,採用UI線程的Looper來處理消息,這就是為什麼AsyncTask必須在UI線程調用,因為子線程默認沒有Looper無法創建下面的Handler,程序會直接Crash

3、AsyncTask中有兩個線程池和一個Handler,一個線程池用啟坦於任務排隊,一個線程池用於真正的執行任務,InternalHandler用於將

執行環境從線程池切換到主線程

AsyncTask串列與並行

五、線程池

線程池中多餘的線程是如何回收的

B. android onactivityresult 裡面可以開線程嗎

在一個主界面(主Activity)上能連接往許多不同子功能模塊(子Activity上去),當子模塊的事情做完之後就回到主界面,或許還同時返回一些子模塊完成的數據交給主Activity處理。這樣的數據交流就要用到回調函數onActivityResult。

<1>startActivityForResult(Intent intent,
int requestCode);

第一個參數:一個Intent對象

第二個參數:如果> = 0,當Activity結束時requestCode將歸還在onActivityResult()中。以便確定返回的數據是從哪個Activity中返回

<2>onActivityResult(int requestCode, int resultCode, Intent data)

第一個參數:這個整數requestCode提供給onActivityResult,是以便確認返回的數據是從哪個Activity返回的。

這個requestCode和startActivityForResult中的requestCode相對應。

第二個參數:這整數resultCode是由子Activity通過其setResult()方法返回。

第三個參數:一個Intent對象,帶有返回的數據。

<3>setResult(int resultCode, Intent data)

調用這個方法把Activity想要返回的數據返回到父Activity

第一個參數:當Activity結束時resultCode將歸還在onActivityResult()中,一般為RESULT_CANCELED , RESULT_OK。

第二個參數:一個Intent對象,返回給父Activity的數據。

C. android在activity啟用線程,沒有出錯,調試過了,不執行run()方法,附上代碼。

我 直接給你上代碼了,你看看線程是怎麼用的,希望你自己學會他!
public void OnClick(){
MyThread t1=new MyThread();
t1,start();
}

class MyThread implements Runnable {
public void run() {
你的代碼

}
}

D. Android 如何創建子線程以及區分主線程

在一個Android 程序開始運行的時候,會單獨啟動一個Process。默認的情況下,所有這個程序中的Activity或者Service(Service和 Activity只是Android提供的Components中的兩種,除此之外還有Content Provider和Broadcast Receiver)都會跑在這個Process。
一個Android 程序默認情況下也只有一個Process,但一個Process下卻可以有許多個Thread。在這么多Thread當中,有一個Thread,我們稱之為UI Thread。UI Thread在Android程序運行的時候就被創建,是一個Process當中的主線程Main Thread,主要是負責控制UI界面的顯示、更新和控制項交互。在Android程序創建之初,一個Process呈現的是單線程模型,所有的任務都在一個線程中運行。因此,我們認為,UI Thread所執行的每一個函數,所花費的時間都應該是越短越好。而其他比較費時的工作(訪問網路,下載數據,查詢資料庫等),都應該交由子線程去執行,以免阻塞主線程。
那麼,UI Thread如何和其他Thread一起工作呢?常用方法是:
誕生一個主線程的Handler物件,當做Listener去讓子線程能將訊息Push到主線程的Message Quene里,以便觸發主線程的handlerMessage()函數,讓主線程知道子線程的狀態,並在主線程更新UI。

E. Android: 一個Activity開辟的線程,在這個Activity調用finish()的時候會強制關閉這個線程嗎

不會,你可以在onDestory中手動終止該線程

熱點內容
快捷鍵打開Linux終端 發布:2025-01-06 01:29:58 瀏覽:195
python有什麼開發 發布:2025-01-06 01:29:57 瀏覽:475
怎麼上傳視頻騰訊視頻怎麼下載不了 發布:2025-01-06 01:29:18 瀏覽:264
手機搭建我的世界基岩版伺服器 發布:2025-01-06 01:19:20 瀏覽:889
西門子pid編程 發布:2025-01-06 01:15:26 瀏覽:629
sql日期條件 發布:2025-01-06 01:13:57 瀏覽:409
櫻花映射伺服器要怎麼下載 發布:2025-01-06 01:03:05 瀏覽:720
我的世界147伺服器地址大全 發布:2025-01-06 00:57:44 瀏覽:204
pta自己編譯器正確答案錯誤 發布:2025-01-06 00:53:14 瀏覽:127
常用存儲卡 發布:2025-01-06 00:50:16 瀏覽:112