返回顶部
首页 > 资讯 > 精选 >Android中如何使用异步线程更新UI视图
  • 311
分享到

Android中如何使用异步线程更新UI视图

android 2023-05-30 21:05:32 311人浏览 薄情痞子
摘要

这篇文章主要为大家展示了“Android中如何使用异步线程更新UI视图”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android中如何使用异步线程更新UI视图”这篇文章吧。在Android中子

这篇文章主要为大家展示了“Android中如何使用异步线程更新UI视图”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android中如何使用异步线程更新UI视图”这篇文章吧。

在Android中子线程是不能更新ui的。

所以我们要通过其他方式来动态改变ui视图,

1、runOnUiThread

activity提供的一个轻量级更新ui的方法,在Fragment需要使用的时候要用getActivity.runOnUiThread开启线程

这种方法最简单,方便更新一些不需要判断的通知,比如在聊天项目中动态获取未读消息数量。

runOnUiThread(new Runnable() {      @Override      public void run() {          sendMessage("[自动回复]你好,我是机器人");             }    });

2、Handler message

使用这个方法可以设置比如按钮倒计时的控制,也是比较常见的一种更新ui的方法。

创建一个主线程用于接收子线程不断发送的消息,通过msg.what判断传递的消息类型。
根据类型进行相关ui的更新操作。

创建线程用于接收:

 private Handler mHandler = new Handler() {    public void handleMessage(Message msg) {      switch (msg.what) {        case 0:          setResult(RESULT_OK);          TimerButtonActivity.this.finish();          break;        case 4:          mTimer1.setEnabled(false);          mTimer1.setText("已发送(" + String.valueOf(time) + ")");          break;        case 5:          mTimer1.setEnabled(true);          mTimer1.setText("重新获取验证码");          time = 10;          break;      }    }  };

发送消息的方法:

mHandler.sendEmptyMessage(5);

3、Handler Runnable

同样也是需要先创建一个线程。

Handler handler = new Handler();

在一开始加载的地方使用postDelayed设置加载延迟

handler.postDelayed(new Runnable() {      @Override      public void run() {        updataData();      }    }, 2000);

或者我们要进行一个自动刷新的动作,当动作完成时,隐藏刷新效果

 //开启一个刷新的线程    mFragmentMainRf.post(new Runnable() {      @Override      public void run() {        //开始        mFragmentMainRf.setRefreshing(true);      }    });    //监听刷新状态操作    mFragmentMainRf.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {      @Override      public void onRefresh() {        //设置延迟刷新时间1500        handler.postDelayed(new Runnable() {          @Override          public void run() {            //刷新数据            updataData();          }        }, 1800);      }    });

4、AsyncTask

AsyncTask可以更加轻松地使用UI线程。该类允许执行后台操作并在UI线程上更新视图,而不需要操纵线程和处理程序。

AsyncTask被设计为一个辅助类Thread,Handler 并且不构成通用线程框架。用于短时间更新操作。

在使用的时候需要继承AsyncTask并重写方法:

doInBackground:用于返回结果

onProgressUpdate: onProgressUpdate是在UI线程中执行,所有可以对UI空间进行操作

onPostExecute:接收doInBackground的返回结果,用于更新UI

 class AsyncTaskWrapper extends AsyncTask<Void, Integer, Object>{    @Override    protected Object doInBackground(Void... voids) {      try {        Thread.sleep(2000);         } catch (InterruptedException e) {        e.printStackTrace();      }      return null;    }    @Override    protected void onProgressUpdate(Integer... values) {      super.onProgressUpdate(values);      Log.e("Progress",valuse);    }    @Override    protected void onPostExecute(Object o) {      super.onPostExecute(o);      Log.e("Message",o);    }  }

以上是“Android中如何使用异步线程更新UI视图”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Android中如何使用异步线程更新UI视图

本文链接: https://lsjlt.com/news/221499.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android中如何使用异步线程更新UI视图
    这篇文章主要为大家展示了“Android中如何使用异步线程更新UI视图”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android中如何使用异步线程更新UI视图”这篇文章吧。在Android中子...
    99+
    2023-05-30
    android
  • android开发教程之handler异步更新ui
    其实文字游戏程序很简单,就是一个view和一个Activity,在利用下handier和postInvalidate()更新UI 调用Handler.post(Runnable...
    99+
    2022-06-06
    android开发 handler 教程 Android
  • android使用handler ui线程和子线程通讯更新ui示例
    代码如下:package com.act262.sockettx; import android.app.Activity;import android.os.Bundle;...
    99+
    2022-06-06
    handler Android
  • Android如何实现使用handler在子线程中更新UI示例
    小编给大家分享一下Android如何实现使用handler在子线程中更新UI示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MainActivity代码:pac...
    99+
    2023-05-30
    android handler
  • android应用中怎么对UI进行异步更新
    本篇文章给大家分享的是有关android应用中怎么对UI进行异步更新,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。使用Handler消息传递机制package com.exam...
    99+
    2023-05-31
    android roi
  • android使用多线程更新ui示例分享
    Android线程涉及的技术有:Handler;Message;MessageQueue;Looper;HandlerThread。 下面看一段在线程中更新UI的代码: 代码如...
    99+
    2022-06-06
    多线程 线程 Android
  • 在WPF中使用多线程更新UI
    有经验的程序员们都知道:不能在UI线程上进行耗时操作,那样会造成界面卡顿,如下就是一个简单的示例: public partial class MainWindow : Win...
    99+
    2024-04-02
  • angular强制更新ui视图如何实现
    本文小编为大家详细介绍“angular强制更新ui视图如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“angular强制更新ui视图如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。angular 强...
    99+
    2023-07-05
  • android应用中实现异步更新UI的方法有哪些
    android应用中实现异步更新UI的方法有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。android中有下列几种异步更新ui的解决办法:Activity.runOnUi...
    99+
    2023-05-31
    android roi
  • 在WPF中怎么使用多线程更新UI
    本篇内容主要讲解“在WPF中怎么使用多线程更新UI”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“在WPF中怎么使用多线程更新UI”吧!有经验的程序员们都知道:不能在UI线程上进行耗时操作,那样会...
    99+
    2023-07-02
  • Android 在其他线程中更新UI线程的解决方法
    方法一:Activity.runOnUiThread(Runnable )(经验之道: 这个最好用, 凡是要刷新页面的地方,Activity.runOnUiThread( ne...
    99+
    2022-06-06
    方法 线程 Android
  • Android实现在子线程中更新Activity中UI的方法
    本文实例讲述了Android实现在子线程中更新Activity中UI的方法。分享给大家供大家参考,具体如下: 在Android平台下,进行多线程编程时,经常需要在主线程之外的一...
    99+
    2022-06-06
    方法 activity 线程 Android
  • Vue中使用this.$set()如何新增数据,更新视图
    目录使用this.$set()新增数据,更新视图描述简单的讲就是说说vue.set() (this.$set)用法使用this.$set()新增数据,更新视图 描述 如果在实例创建之...
    99+
    2024-04-02
  • Android 在子线程中更新UI的几种方法示例
    本文介绍了Android 在子线程中更新UI的几种方法示例,分享给大家,具体如下:方式一:Handler和Message① 实例化一个Handler并重写handlerMessage()方法private Handler handler =...
    99+
    2023-05-30
    android 子线程 更新ui
  • C#中如何使用异步编程模型处理UI响应
    C#中如何使用异步编程模型处理UI响应,需要具体代码示例随着计算机技术的不断发展,用户对于软件系统的响应速度要求也越来越高。传统的同步编程模型在处理复杂的业务逻辑时,容易造成用户界面的卡顿或者无响应问题。为了解决这个问题,C#引入了异步编程...
    99+
    2023-10-22
    C# 异步编程 UI响应
  • Java 异步编程教程:如何在http请求中使用多线程实现异步编程?
    Java是一种面向对象的编程语言,具有很好的可移植性和可扩展性,在Web开发中广泛应用。然而,由于Web应用程序需要处理大量的http请求,因此必须采用异步编程技术,以确保Web应用程序的性能和可扩展性。 在本文中,我们将介绍如何使用Ja...
    99+
    2023-06-25
    异步编程 教程 http
  • C#如何使用异步委托开启线程
    这篇文章主要为大家展示了“C#如何使用异步委托开启线程”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#如何使用异步委托开启线程”这篇文章吧。异步委托开启线程 public ...
    99+
    2023-06-17
  • Android 中使用 AsyncTask 异步读取网络图片
     1.新建Android工程AsyncLoadPicture 新建布局文件activity_main.xml主界面为一个GridView,还有其子项布局文件grid...
    99+
    2022-06-06
    网络图 图片 异步 asynctask Android
  • Android视图绑定viewBinding如何使用
    本文小编为大家详细介绍“Android视图绑定viewBinding如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android视图绑定viewBinding如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-07-05
  • Vue中使用this.$set()怎么新增数据并更新视图
    本文小编为大家详细介绍“Vue中使用this.$set()怎么新增数据并更新视图”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue中使用this.$set()怎么新增数据并更新视图”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作