国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android 在子線程中更新UI的幾種方法示例

2019-12-12 02:12:09
字體:
來源:轉載
供稿:網友

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

方式一: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。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 启东市| 英吉沙县| 保山市| 武胜县| 托克逊县| 梨树县| 教育| 新巴尔虎右旗| 沾化县| 大新县| 昭平县| 大方县| 长海县| 馆陶县| 洛扎县| 延长县| 丰县| 资源县| 建平县| 南岸区| 兴和县| 昭觉县| 湟中县| 廊坊市| 弋阳县| 尼玛县| 六枝特区| 临潭县| 佛坪县| 仁化县| 咸阳市| 安康市| 临高县| 昌邑市| 平湖市| 西丰县| 霍州市| 泰和县| 仪陇县| 仪陇县| 桃江县|