这里有新鲜出炉的精品教程,程序狗速度看过来!
Android 是一种基于 Linux 的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由 Google 公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用 "安卓" 或 "安致"。
本篇文章主要介绍了 Android UI 更新的几种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
前言
在 android 开发中,界面 UI 的更新都是在主线程来完成的。线程分为主线程(Main Thread,简称 MT)和工作线程(Work Thread,简称 WT),我们通常会在 WT 中执行一些比较耗时的操作,比如下载,网络,缓存等,然后在将结果发送给 MT 进行 UI 的更新操作。如果是在 WT 进行 UI 的更新,则会抛出异常,android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.(只有创建这个 View 的原始线程才能修改这个 view)。
在 BT 搜索、WIFI 搜索、其他需要更新 View 的 UI 过程中,很多是采用广播的方式通知搜索的结果,实时的显示到 listview 中进行 UI 的更新操作。通常会使用以下几种方式进行 UI 的更新:handler,runOnUiThread,子线程发送 Message。
一、Activity.runOnUiThread
利用 Activity.runOnUiThread(Runnable) 把更新 ui 的代码创建在 Runnable 中,然后在需要更新 ui 时,把这个 Runnable 对象传给 Activity.runOnUiThread(Runnable)。这样 Runnable 对像就能在 ui 程序中被调用。如果当前线程是 UI 线程, 那么行动是立即执行。如果当前线程不是 UI 线程, 操作是发布到事件队列的 UI 线程。
- mActivity.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- Log.e(TAG, "开始添加设备!");
- addDevice(device);
- }
- });
二、handler.post(Runnable)
- handler.post(new Runnable() {
- @Override
- public void run() {
- addDevice(device);
- }
- });
三、子线程发送 Message
首先在需要执行更新的位置添加以下代码
- new Thread(new Runnable() {
- @Override
- public void run() {
- //Message msg = new Message();
- //msg.what = 0x06;
- //handler.sendMessage(msg);
- handler.sendEmptyMessage(0x06);
- }
- }).start();
然后进入 handler 下进行处理
- final Handler handler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case 0x06:
- addDevice(device);
- break;
- default:
- break;
- }
- super.handleMessage(msg);
- }
- };
来源: http://www.phperz.com/article/17/0701/336615.html