Android平台在UI Thread中执行非UI线程中定义的代码片段的几种方法

在Android平台中,只有UI Thread负责界面元素操作,而在非UI线程中操作一些比较费时的事情,比如下载文件等。而非UI线程操作完成后往往需要把结果显示在界面中,在这种情况下,就需要几种方式通知UI Thread执行相应的操作。


第一种方法:使用Runnable类

在Activity类中实现并定义Runnable对象,然后调用Activity的runOnUiThread(Runnable action)方法。但这种方法有局限性,在Runnable 对象中操作此Activity对象的元素时,可能会发生异常。比如当我们创建完Runnable对象后发生了横竖屏切换,那么在Runnable对象中使用的元素可能不是现在的Activity对象中的界面元素,这个时候再在UI Thread中操作的元素是已经destroy的Activity的界面元素,所以必然会发生异常。


第二种方法:使用实现并定义Handler对象

这种方法也会发生上述的异常


第三种方法:使用实现并定义BroadcastReceiver对象

这种方法比较安全,不会发生上述异常。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值