这里有新鲜出炉的精品教程,程序狗速度看过来!
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。
本篇文章主要介绍了Android 在子线程中更新UI的几种方法示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
本文介绍了Android 在子线程中更新UI的几种方法示例,分享给大家,具体如下:
方式一:Handler和Message
① 实例化一个Handler并重写handlerMessage()方法
- private Handler handler = newHandler() {
- public void handleMessage(Message msg) {
- // 处理消息
- super.handleMessage(msg);
- switch (msg.what) {
- case 1:
- button1.setText("点击安装");
- break;
- case 2:
- button1.setText("打开");
- break;
- }
- };
- };
② 在子线程中获取或创建消息,并使用handler对象发送。
- Message msg = handler.obtainMessage();
- msg.what = 1;
- handler.sendMessage(msg);
方式二:在子线程中直接调用Activity.runOnUiThread(Runnable action)方法
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- // 更新UI的操作
- }
- });
方式三:在子线程中调用View的post()方法
- myView.post(new Runnable() {
- @Override
- public void run() {
- // 更新UI
- myView.setText(“更新UI”);
- }});
方式四:在子线程中调用View.PostDelayed(Runnabe,long)
对方式三对补充,long参数用于制定多少时间后运行后台进程
方式五:Handler的post()方法
① 创建一个Handler成员变量
- private Handler handler = new Handler();
② 在子线程中调动post()方法
- handler.post(new Runnable() {
- @Override
- public void run() {
- // 更新UI
- myView.setText(“更新UI”);
- }});
方式六:AsyncTask
- private class DownloadFilesTask extends AsyncTask < URL,
- Integer,
- Long >
- //在这里声明了Params、Progress、Result参数的类型
- {
- //因为这里不需要使用onPreExecute回调方法,所以就没有加入该方法
- //后台线程的目的是更具URL下载数据
- protected Long doInBackground(URL...urls) {
- int count = urls.length; //urls是数组,不止一个下载链接
- long totalSize = 0; //下载的数据
- for (int i = 0; i < count; i++) {
- //Download是用于下载的一个类,和AsyncTask无关,大家可以忽略他的实现
- totalSize += Downloader.downloadFile(urls[i]);
- publishProgress((int)((i / (float) count) * )); //更新下载的进度
- // Escape early if cancel() is called
- if (isCancelled()) break;
- }
- return totalSize;
- }
- //更新下载进度
- protected void onProgressUpdate(Integer...progress) {
- setProgressPercent(progress[0]);
- }
- //将下载的数据更新到UI线程
- protected void onPostExecute(Long result) {
- showDialog("Downloaded " + result + " bytes");
- }
- }
对于一般的只是简单更新ui,情形不复杂的,使用方式二三就可以了,但是当情形比较复杂,还是推荐使用handler。
来源: http://www.phperz.com/article/17/0916/345734.html