編輯:Android技術基礎
1、為什麼要用多線程?
(1)提高用戶體驗;
(2)避免應用程序未響應(Application is not responding)
移動開發的“三不”原則:不讓用戶等、不讓用戶想、不要用戶煩。響應慢了用戶需要等,等的次數多了就會煩,你的應用離被卸載不遠了。
即使你的程序中某個事件響應不超過5秒鐘,人眼可以分辨的時間是0.1秒,小於0.1秒基本感覺不出來,超過0.2秒用戶就能感覺到有點兒卡了,俗稱打嗝現象,2秒以上就很慢了,用戶體驗會很差。有同學說我可以用進度條啊,但你的程序中不能到處都是進度條,否則那個圈圈會把用戶轉暈的,好像在對用戶說,畫個圈圈煩死你……
比如某些應用,它要顯示很多圖片,還好它是異步的,不過在圖片加載完成前每個圖片的位置上都有一個圈圈,讓人看了很煩。你可以變通一下,圖片加載成功之前顯示一個默認的圖片,加載成功後再刷新一下即可,何必弄那麼多進度條呢?
2、處理的基本原則:
所有可能耗時的操作都放到其他線程去處理。
Android中的Main線程的事件處理不能太耗時,否則後續的事件無法在5秒內得到響應,就會彈出ANR對話框。那麼哪些方法會在 Main線程執行呢?
(1)Activity的生命周期方法,例如:onCreate()、onStart()、onResume()等
(2)事件處理方法,例如onClick()、onItemClick()等
通常Android基類中以on開頭的方法是在Main線程被回調的。
提高應用的響應性,可以從這兩方面入手。
一般來說,Activity的onCreate()、onStart()、onResume()方法的執行時間決定了你的應用首頁打開的時間,這裡要盡量把不必要的操作放到其他線程去處理,如果仍然很耗時,可以使用SplashScreen。使用SplashScreen最好用動態的,這樣用戶知道你的應用沒有死掉。
當用戶與你的應用交互時,事件處理方法的執行快慢決定了應用的響應性是否良好,一般分為同步和異步兩種情況:
(1)同步,需要等待返回結果。例如用戶點擊了注冊按鈕,需要等待服務端返回結果,那麼需要有一個進度條來提示用戶你的程序正在運行沒有死掉。一般與服務端交互的都要有進度條,例如系統自帶的浏覽器,URL跳轉時會有進度條。
(2)異步,不需要等待返回結果。例如微博中的收藏功能,點擊完收藏按鈕後是否成功執行完成後告訴我就行了,我不想等它,這裡最好實現為異步的。
3. 如何實現線程間通訊?
比較流行的方法有兩種:Handler、AsyncTask。
TableLayout表格布局 TableLayout是指將子元素的位置分配到行或列中。Android的一個TableLayout有許多TableRow組成,每一個Ta
本節引言:上節我們對BroadcastReceiver已經有了一個初步的了解了,知道兩種廣播類型:標准與有序,動態或靜態注冊廣播接收者,監聽系統廣播
Toast用於向用戶顯示一些幫助或者提示,對於我們來說已經不陌生了,經常用到。 下面我們一起再深入了解一下Toast,你會驚奇發現Toast原來還能這樣做!
上下文菜單ContextMenu可以像操作Options Menu那樣給上下文菜單增加菜單項。 上下文菜單與Options Menu最大的不同在於,Options Me