Android 四种异步操作UI界面的方法

对于Android  异步操作在应用中使用率非常高,使用是开户另一线程,主线程(UI)不能长时间等待,而其它线程中是不能操作UI的,

方法1:Handler
子线程调用Handler的sendMessage(message)发送事件。

Handler handler= new Handler() {
      @Override
      public void handleMessage(Message msg) {
             super.handleMessage(msg);
             //操作界面
          textView.setText("zhangkai281");
   }
 };


public class MyThread extends Thread {
     public void run() {
​    ​    ​    // 耗时操作
​    ​    ​    ​loadNetWork();
            Message msg = new Message();
            handler.sendMessage(msg);//向Handler发送消息,
      }
 }

方法2:AsyncTask

//UI线程中执行
new DownloadImageTask().execute( "www.91dota.com" );

private class LoadTask extends AsyncTask {
protected String doInBackground( String... url ) {
        return loadDataFormNetwork( url[0] );//后台耗时操作
}

protected void onPostExecute( String result ) {
      myText.setText( result ); //得到来自网络的信息刷新页面 

}

方法3:View.post(Runnable )

public void onClick( View v ) {
        new Thread( new Runnable() {
                public void run() {
                       // 耗时操作
​    ​    ​    ​    ​    ​      loadNetWork();
​                          myText.( new Runnable() {
                                  myText.setText( 来自网络的信息);
                          });
                 }
        }).start();
}

方法4:Activity.runOnUiThread(Runnable )   与view.post类似

public void onClick( View v ) {
        new Thread( new Runnable() {
                public void run() {
                       // 耗时操作
​    ​    ​    ​    ​    ​      loadNetWork();
​                         Activity.runOnUiThread.( new Runnable() {
                                  myText.setText( 来自网络的信息);
                          });
                 }
        }).start();
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 异步编程是在 Android 应用中处理耗时操作的一种技术。在 Android 中,主线程(也称为 UI 线程)用于处理界面的绘制和用户交互,如果在主线程中执行耗时操作,会导致界面卡顿,影响用户体验。 为了避免在主线程中执行耗时操作Android 提供了多种异步编程的机制,常用的有以下几种: 1. AsyncTask:AsyncTask 是一个轻量级的异步任务类,可以在后台执行耗时操作,并在主线程更新 UI。它通过重写 `doInBackground()` 方法执行后台操作,重写 `onPostExecute()` 方法更新 UI。但是 AsyncTask 已经被废弃,不再推荐使用。 2. Handler 和 Looper:Handler 和 Looper 用于在不同线程之间进行通信。通过创建 Handler 对象,可以将任务发送到主线程的消息队列中,在主线程中处理这些任务。这种方式需要手动管理消息队列和消息处理。 3. AsyncTaskLoader:AsyncTaskLoader 是 AsyncTask 的改进版,适用于加载数据并在界面上显示的情况。它提供了更好的生命周期管理和数据缓存机制。 4. RxJava:RxJava 是一个基于观察者模式的异步编程库,可以简化异步任务的处理。它使用可观察者和订阅者模式来实现异步操作,提供了丰富的操作符来处理异步任务。 5. Kotlin 协程:Kotlin 协程是一种轻量级的异步编程方式,可以在代码中使用类似同步代码的方式处理异步任务。它提供了简洁的语法和强大的并发处理能力。 以上是 Android 中常用的异步编程方式,开发者可以根据实际需求选择合适的方式来处理异步操作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值