91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-09-20 01:43:24 來源:腳本之家 閱讀:150 作者:一直在進步的李哈哈 欄目:移動開發

本文介紹了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。

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大冶市| 祥云县| 五峰| 浦东新区| 武胜县| 上林县| 济阳县| 岑溪市| 浦江县| 合作市| 嫩江县| 离岛区| 瑞昌市| 石屏县| 磐安县| 灌阳县| 吉木乃县| 长垣县| 简阳市| 壶关县| 株洲市| 贵阳市| 吐鲁番市| 齐齐哈尔市| 永修县| 嘉定区| 大田县| 青冈县| 绥德县| 石嘴山市| 阿坝县| 马尔康县| 大新县| 福安市| 酉阳| 紫金县| 通化县| 论坛| 贺州市| 胶南市| 堆龙德庆县|