如何获取handlemessage里面的数据

如何获取handlemessage里面的数据,第1张

在日常开发中,都避免不了进行网络请求,并更新View,由于Android中主线程不可以进行耗时 *** 作,所以我们的网络请求只能放在子线程中,又由于在子线程中不能更新UI,所以我们就需要使用Handler切换到主线程并更新UI。

在介绍Handler使用之前,我们先了解以下两个问题。

1、为什么主线程不能进行耗时 *** 作?

因为如果在主线程进行耗时 *** 作,容易出现ANR,Application Not Responding,即应用无响应,当在一定的时间内,app无法响应时就会出现ANR,并d出一个 对话框提示应用无响应,所以我们应该避免在主线程中进行耗时 *** 作,当我们应用出现ANR时,会在

/data/anr/目录中生成tracestxt,我们可以通过这个文件查找错误信息。

2、为什么子线程中不能更新UI?

这是因为在子线程中更新UI不是线程安全的,在Android源码ViewRootImpl的checkThread方法中也对UI做了验证。

基于这两个问题,我们可以使用Handler来解决,接下来介绍Handler的基本使用。

首先创建Handler

接下来发送消息。

这个时候在handlerMessage方法中即可收到消息,获取Message中的数据,并更新UI了。是不是很简单。

您可以在此格式中设置数据

设置数据时

Message msg = new Message();

msgobj = data which you want to set // for object data

Msgarg1 = data which you want to set // for integer data

获取数据时

String data = (String) msgobj; // If object is of String

int integerData = msgarg1;

msgarg1 将您还可以在 msgarg2 他们都是整数类型的传递数据一次只有一个数据传递

以上就是关于如何获取handlemessage里面的数据全部的内容,包括:如何获取handlemessage里面的数据、如何从abstracthandlermapping对象中获取handlermethod对象、Android Handler使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9332006.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存