Android 在其他線程中更新UI線程的解決方法
更新時間:2013年05月22日 16:27:44 作者:
本篇文章是對Android中在其他線程中更新UI線程的方法進行了詳細(xì)的分析介紹,需要的朋友參考下
方法一:Activity.runOnUiThread(Runnable )
(經(jīng)驗之道: 這個最好用, 凡是要刷新頁面的地方,
Activity.runOnUiThread( new Runnable()
{ public void run(){更新UI}}
);
方法二:子線程調(diào)用Handler的sendMessage(message)發(fā)送事件。
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
//操作界面
myText.setText( 來自網(wǎng)絡(luò)的信息);
super.handleMessage(msg);
}
};
public class MyThread extends Thread {
public void run() {
// 耗時操作
loadNetWork();
Message msg = new Message();
mHandler.sendMessage(msg);//向Handler發(fā)送消息,
}
}
方法三:View.post(Runnable )
public void onClick( View v ) {
new Thread( new Runnable() {
public void run() {
// 耗時操作
loadNetWork();
myText.( new Runnable() {
myText.setText( 來自網(wǎng)絡(luò)的信息);
});
}
}).start();
}
方法四:AsyncTask
//UI線程中執(zhí)行
new DownloadImageTask().execute( "www.91dota.com" );
private class DownloadImageTask extends AsyncTask {
protected String doInBackground( String... url ) {
return loadDataFormNetwork( url[0] );//后臺耗時操作
}
protected void onPostExecute( String result ) {
myText.setText( result ); //得到來自網(wǎng)絡(luò)的信息刷新頁面
}
}
(經(jīng)驗之道: 這個最好用, 凡是要刷新頁面的地方,
Activity.runOnUiThread( new Runnable()
{ public void run(){更新UI}}
);
方法二:子線程調(diào)用Handler的sendMessage(message)發(fā)送事件。
復(fù)制代碼 代碼如下:
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
//操作界面
myText.setText( 來自網(wǎng)絡(luò)的信息);
super.handleMessage(msg);
}
};
public class MyThread extends Thread {
public void run() {
// 耗時操作
loadNetWork();
Message msg = new Message();
mHandler.sendMessage(msg);//向Handler發(fā)送消息,
}
}
方法三:View.post(Runnable )
復(fù)制代碼 代碼如下:
public void onClick( View v ) {
new Thread( new Runnable() {
public void run() {
// 耗時操作
loadNetWork();
myText.( new Runnable() {
myText.setText( 來自網(wǎng)絡(luò)的信息);
});
}
}).start();
}
方法四:AsyncTask
復(fù)制代碼 代碼如下:
//UI線程中執(zhí)行
new DownloadImageTask().execute( "www.91dota.com" );
private class DownloadImageTask extends AsyncTask {
protected String doInBackground( String... url ) {
return loadDataFormNetwork( url[0] );//后臺耗時操作
}
protected void onPostExecute( String result ) {
myText.setText( result ); //得到來自網(wǎng)絡(luò)的信息刷新頁面
}
}
您可能感興趣的文章:
- 淺談Android 的線程和線程池的使用
- Android自帶的四種線程池使用總結(jié)
- 在Android線程池里運行代碼任務(wù)實例
- Android 線程之自定義帶消息循環(huán)Looper的實例
- Android開發(fā)之多線程中實現(xiàn)利用自定義控件繪制小球并完成小球自動下落功能實例
- Android開發(fā)筆記之:如何安全中止一個自定義線程Thread的方法
- Android Handler主線程和一般線程通信的應(yīng)用分析
- android開發(fā)教程之子線程中更新界面
- Android多線程及異步處理問題詳細(xì)探討
- android使用多線程更新ui示例分享
- Handler與Android多線程詳解
- Android編程自定義線程池與用法示例
相關(guān)文章
Android Toolbar自定義標(biāo)題標(biāo)題居中的實例代碼
這篇文章主要介紹了Android Toolbar自定義標(biāo)題 標(biāo)題居中的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08Android 通過自定義view實現(xiàn)水波紋效果案例詳解
這篇文章主要介紹了Android 通過自定義view實現(xiàn)水波紋效果案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08TextView顯示文本控件兩種方法 TextView顯示link的方法
這篇文章主要為大家詳細(xì)介紹了TextView顯示文本控件兩種方法,TextView顯示link的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08Android基于opencv實現(xiàn)多通道分離與合并
針對圖像多通道的分離與混合,OpenCV 4中提供了split()函數(shù)和merge()函數(shù)用于解決這些需求。本文講解一下Android如何調(diào)用這些函數(shù)實現(xiàn)多通道分離與合并2021-06-06Android中實現(xiàn)記事本動態(tài)添加行效果
記事本對我們每個人來說再熟悉不過,下面這篇文章主要給大家介紹了在Android中實現(xiàn)記事本動態(tài)添加行效果的相關(guān)資料,這是最近在開發(fā)中遇到的一個小需求,想著分享出來供大家參考學(xué)習(xí),需要的朋友們下面來一起看看吧。2017-06-06Android開發(fā)教程之ContentProvider數(shù)據(jù)存儲
這篇文章主要介紹了Android開發(fā)教程之ContentProvider數(shù)據(jù)存儲的相關(guān)資料,需要的朋友可以參考下2016-12-12Android Webview的postUrl與loadUrl加載頁面實例
這篇文章主要介紹了Android Webview的postUrl與loadUrl加載頁面實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03android notification 的總結(jié)分析
notification是一種出現(xiàn)在任務(wù)欄的提示,特別是在4.0以后notification改進了不少,本文內(nèi)容都是基于4.0及4.1以后總結(jié)來的2013-05-05