編輯:關於Android編程
相信初學Android開發的朋友來說,應該都會遇到一個問題,我們開啟了一個線程,在這個線程裡面我們進行了更新UI的操作,也許是在TextView顯示了一行文字,也許是改變了ImageView顯示的圖片,雖然只是看似簡單並且正確的操作,但是Android系統讓你的程序光榮的崩潰了,並且你還不知道為什麼錯,這才是最痛苦的,曾經深受這種痛苦的我,為了不再讓這種痛苦蔓延下去,我決定把更新UI的幾種方法給大家好好說說,讓大家在Thread的run方法中可以隨心所欲的更新UI,再也不用痛苦了。
利用Handler類的post方法
我們首先需要在MainActivity中生成一個Handler類的對象,可以不用實現handMessage方法,因為Handler類的對象此時不是處理消息而是充當發送消息的角色。
handler.post(new Runnable() {
@Override
public void run() {
mTextView.setText("OK");
}
});
這樣,我們出入一個Runnable,在裡面實現我們更新UI的代碼,然後就可以更新了,不會崩潰的。
利用Handler自己的處理消息的方法
private Handler handler = new Handler(){
public void handleMessage(android.os.Message msg){
mTextView.setText("ok");
};
};
可以看到,我覆蓋了handleMessage方法,然後在裡面我添加了更新UI的代碼,當然也是正確的,可以成功的更新UI。然後我們需要在MainActivity中調用Handler的發送消息的方法,給自己發送消息,然後才能處理,我們可以簡單的調用一個方法發送一個空消息即可:handler.sendEmptyMessage(0);
在runOnUiThread方法中更新UI
runOnUiThread(new Runnable() {
@Override
public void run() {
mTextView.setText("updateUI->ok");
}
});
runOnUiThread方法,根據其名稱我們就可以知道這個方法可能就是用來更新UI的,因為更新UI必須在UI線程,其他線程不允許更新UI,所以我們在runOnUiThread方法中傳入一個Runnable,然後我們在裡面實現我們的操作就可以了。這個方法和第一個方法還是很像的,我個人還是比較喜歡這個方法的,因為它不需要一個Handler的對象,我覺得很方便啦。
View調用post方法實現更新UI
mTextView.post(new Runnable() {
@Override
public void run() {
mTextView.setText("ViewUI->ok");
}
});
我們同樣需要傳入Runnable,然後更新就可以了。
因為Android系統在設計的時候就不讓我們在非UI線程進行更新UI的操作,不僅如此我們也不能在UI線程進行連接網絡的操作,如果不知道的朋友可能會被坑死吧(本人已被坑過),都是為了UI線程的安全性,我們如果需要在UI線程進行更新操作,比如顯示下載進度啦,更新進度條等等,我們這時候就需要一個能在UI線程和非UI線程進行通信的對象,通知UI線程去更新非UI線程的要求,這個對象我想Handler應該就是它了,至於Handler的重要性,我就不累述了,有興趣的大家可以自己去找一些相關的資料來看,弄懂Handler機制的存在意義及使用方法,相信對開發還是很有幫助的。
““XXX(機主姓名)看這個,ht://********XXshenqi.apk”最近一種手機病毒爆發,機主收到這樣的短信,開頭是以發
首先必須知道JNI是什麼東東?JNI(Java Native Interface)是java本地語言接口,也就是提供一種方法可以用JAVA調用底層語言(C/C++)。一般
不知從某某時間開始,這種效果開始在UI設計中流行起來了,讓我們先來看看效果:大家在支付寶、美團等很多App中都有使用,要實現這個效果,我們可以來分析下思路:我們肯定要用2
一、概述周末游戲打得過猛,於是周天熬夜碼代碼,周一早上渾渾噩噩的發現android-percent-support-lib-sample這個項目,Google終於開始支持