最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android異步更新UI的四種方式

 更新時間:2016年05月18日 11:55:07   投稿:lijiao  
這篇文章主要為大家詳細介紹了Android異步更新UI的四種方式,感興趣的小伙伴們可以參考一下

大家都知道由于性能要求,android要求只能在UI線程中更新UI,要想在其他線程中更新UI,大致有4種方式,下面分別使用四種方式來更新一個TextView。
1.使用Handler消息傳遞機制

package com.example.runonuithreadtest;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;
public class MainActivity extends Activity {
 private TextView tv;
 Handler handler = new Handler()
 {
 public void handleMessage(android.os.Message msg) {
  if(msg.what==0x123)
  {
  tv.setText("更新后的TextView");
  }
 };
 };
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 tv = (TextView) findViewById(R.id.tv);
 new MyThread().start();
 }
 class MyThread extends Thread
 {
 @Override
 public void run() {
  //延遲兩秒更新
  try {
  Thread.sleep(2000);
  } catch (InterruptedException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  handler.sendEmptyMessage(0x123);
 }
 }
}

2. 使用AsyncTask異步任務(wù)(更新UI的操作只能在onPostExecute(String result)方法中)

package com.example.runonuithreadtest;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
 private TextView tv;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 tv = (TextView) findViewById(R.id.tv);
 new Yibu().execute();
 }
 class Yibu extends AsyncTask<String, String, String>
 {
 @Override
 protected String doInBackground(String... params) {
  try {
  Thread.sleep(2000);
  } catch (InterruptedException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  return null;
 }
 @Override
 protected void onPostExecute(String result) {
  // TODO Auto-generated method stub
  tv.setText("更新后的TextView");
 }
 }
}

3. 使用runOnUiThread(action)方法

package com.example.runonuithreadtest;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
 private TextView tv;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 tv = (TextView) findViewById(R.id.tv);
 new MyThread().start();
 }
 class MyThread extends Thread
 {
 @Override
 public void run() {
  runOnUiThread(new Runnable() {
  @Override
  public void run() {
   // TODO Auto-generated method stub
   try {
    //延遲兩秒更新
    Thread.sleep(2000);
   } catch (InterruptedException e) {
    e.printStackTrace();
   }
   tv.setText("更新后的TextView");
  }
  });
 }
 }
}

4. 使用Handler的post(Runnabel r)方法

package com.example.runonuithreadtest;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;
public class MainActivity extends Activity {
 private TextView tv;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 tv = (TextView) findViewById(R.id.tv);
 Handler handler = new Handler();
 handler.post(new Runnable(){
  @Override
  public void run() {
  try {
   //延遲兩秒更新
   Thread.sleep(2000);
  } catch (InterruptedException e) {
   e.printStackTrace();
  }
  tv.setText("更新后的TextView");
  }
 });
 }
}

以上就是四種Android異步更新UI的方式,希望對大家的學(xué)習有所幫助。

相關(guān)文章

  • android開發(fā)教程之handler異步更新ui

    android開發(fā)教程之handler異步更新ui

    這篇文章主要介紹了android使用handler異步更新ui的示例,大家參考使用吧
    2014-01-01
  • Android實現(xiàn)靜默安裝的兩種方法

    Android實現(xiàn)靜默安裝的兩種方法

    這篇文章主要介紹了Android實現(xiàn)靜默安裝的兩種方法,一種是利用root權(quán)限靜默安裝實現(xiàn),另一種是非root權(quán)限提示用戶安裝,兩種方法分別給出了示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • Android實現(xiàn)今日頭條訂閱頻道效果

    Android實現(xiàn)今日頭條訂閱頻道效果

    這篇文章主要為大家詳細介紹了Android實現(xiàn)今日頭條訂閱頻道效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Android開發(fā)MediaCodec和lamemp3多段音頻截取拼接

    Android開發(fā)MediaCodec和lamemp3多段音頻截取拼接

    這篇文章主要為大家介紹了Android開發(fā)使用MediaCodec和lamemp3實現(xiàn)多段音頻截取拼接的編程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • Android里面的Service種類以及啟動方式

    Android里面的Service種類以及啟動方式

    Android中的Service分為前臺服務(wù)和后臺服務(wù),前臺服務(wù)需要亮身份牌并顯示通知,后臺服務(wù)則有啟動方式選擇,包括startService和bindService,選擇啟動方式應(yīng)根據(jù)任務(wù)類型和場景進行,需要的朋友可以參考下
    2025-02-02
  • Android開發(fā)之關(guān)閉和打開Speaker(揚聲器)的方法

    Android開發(fā)之關(guān)閉和打開Speaker(揚聲器)的方法

    這篇文章主要介紹了Android開發(fā)之關(guān)閉和打開Speaker(揚聲器)的方法,結(jié)合實例形式簡單分析了Android揚聲器的操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-03-03
  • Android實現(xiàn)水波紋擴散效果

    Android實現(xiàn)水波紋擴散效果

    這篇文章主要為大家詳細介紹了Android實現(xiàn)水波紋擴散效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • android網(wǎng)絡(luò)圖片查看器簡單實現(xiàn)代碼

    android網(wǎng)絡(luò)圖片查看器簡單實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了android網(wǎng)絡(luò)圖片查看器的簡單實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Android?14新功能HighLights快速實現(xiàn)文本高亮

    Android?14新功能HighLights快速實現(xiàn)文本高亮

    這篇文章主要為大家介紹了Android?14新功能HighLights快速實現(xiàn)文本高亮示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Android布局——Preference自定義layout的方法

    Android布局——Preference自定義layout的方法

    PreferenceActivity是一個方便設(shè)置管理的界面,但是對于界面顯示來說比較單調(diào),所以自定義布局就很有必要了,下面與大家分享下Preference中自定義layout的方法
    2013-06-06

最新評論

荆州市| 宝清县| 北票市| 开化县| 谢通门县| 灌云县| 大理市| 韶山市| 枣强县| 乌鲁木齐市| 东山县| 沂源县| 广灵县| 阳原县| 仁布县| 广东省| 韶关市| 麻江县| 东阿县| 乾安县| 西城区| 上高县| 永昌县| 松潘县| 抚远县| 鄢陵县| 休宁县| 云浮市| 万山特区| 北票市| 怀化市| 图木舒克市| 绥阳县| 塔城市| 永昌县| 武川县| 古蔺县| 沅陵县| 东丽区| 兰西县| 九台市|