本文介紹了Android 在子線程中更新UI的幾種方法示例,分享給大家,具體如下:

成都創新互聯網站建設公司是一家服務多年做網站建設策劃設計制作的公司,為廣大用戶提供了成都做網站、網站制作,成都網站設計,1元廣告,成都做網站選成都創新互聯,貼合企業需求,高性價比,滿足客戶不同層次的需求一站式服務歡迎致電。
方式一:Handler和Message
① 實例化一個Handler并重寫handlerMessage()方法
private Handler handler = newHandler() {
public void handleMessage(Message msg) {
// 處理消息
super.handleMessage(msg);
switch (msg.what) {
case 1:
button1.setText("點擊安裝");
break;
case 2:
button1.setText("打開");
break;
}
};
}; ② 在子線程中獲取或創建消息,并使用handler對象發送。
Message msg = handler.obtainMessage(); msg.what = 1; handler.sendMessage(msg);
方式二:在子線程中直接調用Activity.runOnUiThread(Runnable action)方法
runOnUiThread(new Runnable() {
@Override
public void run() {
// 更新UI的操作
}
});方式三:在子線程中調用View的post()方法
myView.post(new Runnable() {
@Override
public void run() {
// 更新UI
myView.setText(“更新UI”);
}});方式四:在子線程中調用View.PostDelayed(Runnabe,long)
對方式三對補充,long參數用于制定多少時間后運行后臺進程
方式五:Handler的post()方法
① 創建一個Handler成員變量
private Handler handler = new Handler();
② 在子線程中調動post()方法
handler.post(new Runnable() {
@Override
public void run() {
// 更新UI
myView.setText(“更新UI”);
}});方式六:AsyncTask
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long>
//在這里聲明了Params、Progress、Result參數的類型
{
//因為這里不需要使用onPreExecute回調方法,所以就沒有加入該方法
//后臺線程的目的是更具URL下載數據
protected Long doInBackground(URL... urls) {
int count = urls.length;//urls是數組,不止一個下載鏈接
long totalSize = 0;//下載的數據
for (int i = 0; i < count; i++) {
//Download是用于下載的一個類,和AsyncTask無關,大家可以忽略他的實現
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * ));//更新下載的進度
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
}
//更新下載進度
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
//將下載的數據更新到UI線程
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
對于一般的只是簡單更新ui,情形不復雜的,使用方式二三就可以了,但是當情形比較復雜,還是推薦使用handler。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創新互聯。
新聞名稱:Android在子線程中更新UI的幾種方法示例
文章分享:http://www.yijiale78.com/article48/pdsehp.html
成都網站建設公司_創新互聯,為您提供自適應網站、小程序開發、網站導航、搜索引擎優化、響應式網站、定制網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯