Android handler Thread 修改UI Demo

/**********************************************************************
 *              Android handler Thread 修改UI Demo
 * 说明:
 *     由于经常会遇Android界面需要动态修改界面的情况,但修改UI不能直接
 * 在线程中修改,所以可以使用Thread配合handler来修改。
 *
 *                                    2016-4-13 深圳 南山平山村 曾剑锋
 *********************************************************************/

一、参考文档:
    Android中定时执行任务的3种实现方法
        http://blog.csdn.net/fancsxx/article/details/8811565

二、Demo:
    ......
    public class MainActivity extends Activity {

        TextView shutdownState;

        Handler handler = new Handler() {
            public void handleMessage(Message msg) {
                if (msg.what == 1) {
                    if (GPIOFuncCtrl.getGPIOState(GPIOFuncCtrl.DETECT) == 0)
                        shutdownState.setBackgroundColor(Color.RED);
                    else
                        shutdownState.setBackgroundColor(Color.GREEN);
                }
                super.handleMessage(msg);
            }
        };  

        public class StateOfRunnable implements Runnable {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                while (true) {
                    try {
                        Thread.sleep(500);// 线程暂停10秒,单位毫秒
                        Message message = new Message();
                        message.what = 1;
                        handler.sendMessage(message);// 发送消息
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
        }  

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            ......
            new Thread(new StateOfRunnable()).start();
        }
        ......
    }

 

时间: 2024-10-23 09:08:21

Android handler Thread 修改UI Demo的相关文章

学习通过Thread+Handler实现非UI线程更新UI组件(转)

  [Android线程机制]    出于性能考虑,Android的UI操作并不是线程安全的,这就意味着如果有多个线程并发操作UI组件,可能导致线程安全问题.为了解决这个问题,Android制定了一条简单的规则:只允许UI线程修改Activity里的UI组件    当一个程序第一次启动时,Android会同时启动一条主线程(Main Thread),主线程主要负责处理与UI相关的事件,如用户的按键事件,用户接触屏幕的事件及屏幕绘图事件,并把相关的事件分发到对应的组件进行处理.所以主线程通常又被叫

Android Handler多线程详解_Android

Android--多线程之Handler 前言 Android的消息传递机制是另外一种形式的"事件处理",这种机制主要是为了解决Android应用中多线程的问题,在Android中不 允许Activity新启动的线程访问该Activity里的UI组件,这样会导致新启动的线程无法改变UI组件的属性值.但实际开发中,很多地方需要在 工作线程中改变UI组件的属性值,比如下载网络图片.动画等等.本篇博客主要介绍Handler是如何发送与处理线程上传递来的消息,并讲解 Message的几种传递数

Android Handler 原理分析及实例代码

Android Handler 原理分析 Handler一个让无数android开发者头疼的东西,希望我今天这边文章能为您彻底根治这个问题 今天就为大家详细剖析下Handler的原理 Handler使用的原因 1.多线程更新Ui会导致UI界面错乱 2.如果加锁会导致性能下降 3.只在主线程去更新UI,轮询处理 Handler使用简介 其实关键方法就2个一个sendMessage,用来接收消息 另一个是handleMessage,用来处理接收到的消息 下面是我参考疯狂android讲义,写的一个子

学习Android Handler消息传递机制_Android

Android只允许UI线程修改Activity里的UI组件.当Android程序第一次启动时,Android会同时启动一条主线程(Main Thread),主线程主要负责处理与UI相关的事件,如用户的按键事件.屏幕绘图事件,并把相关的事件分发到对应的组件进行处理.所以,主线程通常又被称为UI线程.  Android只允许UI线程修改Activity里的UI组件,这样会导致新启动的线程无法动态改变界面组件的属性值.但在实际的Android程序开发中,尤其是涉及动画的游戏开发中,需要让新启动的线程

android中子线程更新UI的方式

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

异步-android handler runnable队列问题

问题描述 android handler runnable队列问题 现在我这边要执行多个异步任务,但是这几个任务又不想让他们互相影响, 现在我new一个handler的话,把runnable放入队列中之后,他们应该是一个个来执行的吧,也就是说如果有一个卡住了,其他的就执行不了了,但是我想如果其中一个执行失败,其他的也要执行 这种情况,是否可以用多个handler的方法来解决,有没有更好的解决方案 解决方案 Android中Handler Runnable与Thread的区别 解决方案二: 异步任

ui-关于android子线程操作UI的问题

问题描述 关于android子线程操作UI的问题 看到的所有的资料上都说android的子线程不能操作UI,抱着好奇心我写了下面的程序,竟然运行成功了,不知谁能解释一下这个问题 public class MainActivity extends Activity { Button bt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCon

Android Handler主线程和一般线程通信的应用分析_Android

Handler的定义:主要接受子线程发送的数据, 并用此数据配合主线程更新UI.解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发, 比如说, 你要是点击一个 Button ,Android会分发事件到Button上,来响应你的操作.如果此时需要一个耗时的操作,例如: 联网读取数据,或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,如果你放在主线程中的话,界面会出现假死现象, 如果5秒钟还没有完成的话,会

Android中子线程和UI线程通信详解_Android

Android中子线程和UI线程之间通信的详细解释 1.在多线程编程这块,我们经常要使用Handler,Thread和Runnable这三个类,那么他们之间的关系你是否弄清楚了呢?下面详解一下. 2.首先在开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行. 3.Handler: (1).概念: Handler是沟通Activity 与Thread/runnable的桥梁.而Handler是运行在主UI线程中的,它与子线程