android線程時間
Ⅰ android中怎麼讓線程長時間休眠線程休眠最長的安全時間是多少
設定一個Timer對象,時間到後觸發事件再給handler發消息處理就行,處理完重置timer的時間進入下一個循環即可。隨便用wait之類的土辦法的話很容易被系統判定為進程掛死然後被kill掉的。
Ⅱ android中線程,進程都是什麼意思(通俗易懂的)
android中的進程就是一個個獨立的APP應用。線程可以理解為進程中的時間片斷:從代碼執行的角度來看,主線程就是APP從開始一句一句代碼從上往下執行,而子線程的執行時間片斷與主線程的執行時間片斷是分開的,執行時間不會影響到主線程的執行時間。
Ⅲ 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串列與並行
五、線程池
線程池中多餘的線程是如何回收的
Ⅳ Android性能優化(三)啟動速度優化
Android性能優化(三)啟動速度優化一、App啟動流程
App的啟動流程主要包括以下幾個步驟:
- 點擊桌面App圖標:Launcher進程採用Binder IPC向AMS(Activity Manager Service)進程發起startActivity請求。
- AMS接收請求:AMS接收到請求後,向zygote進程發送創建進程的請求。
- Zygote進程fork新進程:Zygote進程fork出新的子進程,即App進程。
- App進程attachApplication:App進程通過Binder IPC向AMS進程發起attachApplication請求。
- AMS准備並發送調度請求:AMS進程在收到請求後,進行一系列准備工作,再通過binder IPC向App進程發送scheleLaunchActivity請求。
- App進程處理LAUNCH_ACTIVITY消息:App進程的binder線程(ApplicationThread)在收到請求後,通過handler向主線程發送LAUNCH_ACTIVITY消息。
- 主線程創建Activity:主線程在收到Message後,通過反射機制創建目標Activity,並回調Activity.onCreate()等方法。
- App啟動完成:執行完onCreate/onStart/onResume方法,UI渲染結束後,用戶便可以看到App的主界面。
七、啟動優化的具體點
合理使用非同步初始化、延遲初始化和懶載入機制:對於不需要在啟動時就初始化的資源或功能,可以採用非同步初始化、延遲初始化或懶載入機制,以減少啟動時的耗時。
避免啟動過程中的耗時操作:如資料庫I/O操作等,應盡量避免在主線程執行,可以放在子線程或非同步任務中處理。
類載入優化:通過提前非同步執行類載入,可以減少啟動時的類載入時間。
合理使用IdleHandler進行延遲初始化:IdleHandler可以在主線程空閑時執行一些延遲初始化的任務,從而避免在啟動時佔用主線程時間。
簡化布局:優化布局文件,減少不必要的嵌套和復雜的布局結構,可以提高UI渲染的速度,從而減少啟動時間。
通過以上方法,可以有效地優化App的啟動速度,提升用戶體驗。在下一篇文章中,我們將繼續探討Android性能優化的其他方面——卡頓優化。