handler更新UI主线程

示例:下面代码的功能是修改UI主线程TextView的内容

public class MainActivity extends Activity {
    private Button btn_start;
    private TextView numTxtView;
    int i = 2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        numTxtView = (TextView) this.findViewById(R.id.numTxtView);
        btn_start = (Button)this.findViewById(R.id.btn_start);
        final Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                if (msg.what == 0x1233) {
                    //修改主线程中TextView所显示的内容
                    numTxtView.setText("" + i);
                    i++;
                }
            }
        };
        btn_start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //定义一个计时器,让改计时器周期性地执行指定任务
                new Timer().schedule(new TimerTask() {
                    @Override
                    public void run() {
                        //发送空消息
                        handler.sendEmptyMessage(0x1233);
                    }
                }, 0,1000);
            }
        });

    }

}
时间: 2024-08-16 21:58:48

handler更新UI主线程的相关文章

Android中多线程编程(三)Handler更新UI的方式

Handler更新UI的方式和原因以及遇到的问题 1.方式: 只能通过Handler来更新UI. 代码如下: package com.chengdong.su.handlerdemo; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.os.Message; import android.

handler更新ui线程的基本用法

1.因为费时操作要放子线程,更新UI要放UI线程(主线程),所以子线程和主线程通信,通信的话要用到handler这个东西. 这里讲的比较简单,举2个例子说明 2.使用post的是handler ,使用message的是handler2 public class MainActivity extends AppCompatActivity { private TextView textView; private Handler handler = new Handler(); private Ha

android Handler更新UI

android中经常需要更新界面某个元素的值,但是在主线程中是不可以直接更新主线程的值.这里推荐通过handler机制来更新值. 一Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI.          解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发, 比如说, 你要是点击一个 Button, Android会分发事件到Button上,来响应你的操作.  如果此时需要一个耗时的操作,例

关于线程和更新UI线程的笔记

情景1: 向数据库中插入10000条数据的结果: testData();//插入10000条数据 list = blackdao.findAll(); blackAdapter = new BlackAdapter(); lv_black.setAdapter(blackAdapter); 情景2: //使用线程插入数据, new Thread() { public void run() { testData();// 插入10000条数据 }; }.start(); list = blackd

关于Handler的理解,子线程不能更新UI的纠正和回调的思考

开发Android这么久了,总会听到有人说:主线程不能访问网络,子线程不能更新UI.Android的主线程的确不能长时间阻塞,但是子线程为什么不能更新UI呢?今天把这些东西整理,顺便在子线程更新UI. 首先写了一个handler在子线程更新主线程UI,在子线程做了一个耗时操作:从网络下载了一个图片并利用handler发送到handleMessage()的回调中,并更新到主线程的bitmap.图片显示成功,没有问题.接下来在子线程中更新onCreate()中实例化的textview,报错: and

Android ActivityThread(主线程或UI线程)简介

1. ActivityThread功能 它管理应用进程的主线程的执行(相当于普通Java程序的main入口函数),并根据AMS的要求(通过IApplicationThread接口,AMS为Client.ActivityThread.ApplicationThread为Server)负责调度和执行activities.broadcasts和其它操作. 在Android系统中,在默认情况下,一个应用程序内的各个组件(如Activity.BroadcastReceiver.Service)都会在同一个

子线程更新UI界面的2种方法

一.一般我们都会在子线程完成一些耗时的操作. 1.Android中消息机制: 2.知识点: Message:消息,其中包含了消息ID,消息处理对象以及处理的数据等,由MessageQueue统一列队,终由Handler处理.                      Handler:处理者,负责Message的发送及处理.使用Handler时,需要实现handleMessage(Message msg)方法来对特定的Message进行处理,例如更新UI等.                    

基础篇-在非UI线程中更新UI元素

个人原创,转载请注明出处: http://blog.csdn.net/supluo/article/details/ 先了解两个概念 1.UI:User Interface的缩写,用户界面的意思.你可以不恰当的理解为我们能够看到的,操作的东西:在Android中什么才称为UI呢,可以简单的理解为View及其子类等元素.这是一个不够正确的概念,只是对新手做一个简单的抛砖引玉. 2.ANR:Application Not Responding,意思是程序没有响应. 在如下情况下,Android会报出

android中子线程更新UI的方式浅析

一.为何写作此文 ??你是不是经常看到很多书籍中说:不能在子线程中操作ui,不然会报错.你是不是也遇到了如下的疑惑(见下面的代码): @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); Threa