首页 理论教育 Thread实例:使用方法演示

Thread实例:使用方法演示

时间:2023-06-17 理论教育 版权反馈
【摘要】:先来看一个例子,在主线程增加一个耗时线程,Android会因为UI无法响应用户操作造成超时报错终止App运行。新建一个module,命名为ThreadDemo。图4.30在新开线程中处理View的操作,低版本API会报Only the original thread that created a view hierarchy can touch its views异常。在布局文件里增加一个TextView用于显示新开线程回传数据activity_main.xml。图4.31解决上述问题的方法有以下几种:第一种处理方法是把访问UI组件任务交给主线程去处理,使用runOnUiThread方法,修改MainActivity.java如下:API 22模拟器运行效果,见图4.32。

Thread实例:使用方法演示

先来看一个例子,在主线程增加一个耗时线程,Android会因为UI无法响应用户操作造成超时报错终止App运行。

(1)新建一个module,命名为ThreadDemo。

(2)布局文件activity_main.xml。

(3)MainActivity.java。

(4)运行效果,见图4.29。

图4.29

新开一个线程执行耗时操作,UI就可以响应用户操作。

(5)新开一个线程MainActivity.java。

(6)运行效果,见图4.30。

图4.30

在新开线程中处理View的操作,低版本API会报Only the original thread that created a view hierarchy can touch its views异常(API 25以下测试均报异常,API 28不报异常,这和新API中更新View的代码中不再对进程进行判断有关)。(www.xing528.com)

(7)在布局文件里增加一个TextView用于显示新开线程回传数据activity_main.xml。

(8)修改MainActivity.java。

(9)API 22模拟器运行效果,见图4.31。

图4.31

解决上述问题的方法有以下几种:

第一种处理方法是把访问UI组件任务交给主线程(UI线程)去处理,使用runOnUiThread(new Runnable())方法,修改MainActivity.java如下:

API 22模拟器运行效果,见图4.32。

图4.32

第二种处理方法是使用UI组件的post方法,修改MainActivity.java如下:

第三种处理方法是使用UI组件的postDelayed方法,修改MainActivity.java如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈