亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

皮山县| 名山县| 元氏县| 临颍县| 通许县| 深圳市| 合川市| 铜陵市| 宁蒗| 闽侯县| 博野县| 兴义市| 岳西县| 莎车县| 库伦旗| 新安县| 琼海市| 马尔康县| 望江县| 南康市| 南城县| 潢川县| 陆良县| 晴隆县| 南澳县| 新乡市| 绥滨县| 巴林左旗| 昌平区| 西畴县| 柳江县| 绩溪县| 磴口县| 噶尔县| 望城县| 甘南县| 太白县| 建瓯市| 青海省| 宁明县| 肃南|