`
liangoogle
  • 浏览: 274790 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

handler使用之---线程队列与ui线程

阅读更多

这里Handler线程队列和ui主线程公用一共。Handler并没有真正的启动一个线程,而是直接调用run方法。

public class Test extends Activity implements OnClickListener {

    @Override

    protected void onStop() {

        // TODO Auto-generated method stub

        super.onStop();

        handerHandler.removeMessages(0);

    }

 

    private TextView textView1;

 

    public static int add;

 

    private Handler handerHandler = new Handler() {

 

        /*

         * (non-Javadoc)

         * @see android.os.Handler#handleMessage(android.os.Message)

         */

        @Override

        public void handleMessage(Message msg) {

            switch (msg.what) {

                case 0:

//                    textView1.setText("add");

                    textView1.setText(""+add+"");

                   ++add;

                   removeMessages(0);

                   sendEmptyMessageDelayed(0, 5000);

                    Log.e("I AM HANDLER", "I AM TEST>>>>>>>>>>>>>>>>>>>>>>>O");

                    break;

                case 1:

 

                    break;

                case 3:

 

                    break;

                case 4:

 

                    break;

            }

            super.handleMessage(msg);

        }

    };

 

    Runnable testRunnable = new Runnable() {

        public void run() {

 

            // 在这个线程里我们发送一个消息给消息队列,发完之后继续执行下面的代码,

            // 至于发送的消息的处理由handleMessage处理。这是异步的两个线程,实现了两个线程间的通信

            handerHandler.sendEmptyMessage(0);

            Log.e("这是一个线程", "》》》》》》》》》》》》》》》》》》》》》》这个线程要打印run");

        }

    };

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        init();

        handerHandler.post(testRunnable);

 

//        Message msg = new Message();

//        msg.what=0;

//        handerHandler.sendMessage(msg);

        //这用方法比上面那种Message的获取方法节省内部空间

//        Message msg=handerHandler.obtainMessage();

//        msg.arg1=0;

//        handerHandler.sendMessage(msg);

 

 

 

    }

分享到:
评论

相关推荐

    android-thread-producer-consumer-example:线程之间的ProducerConsumer模型示例

    在讲完Looper,Handler和HandlerThread一章之后,一位学生问我们如何将流数据(从传感器)从后台线程传递回主线程(UI)? 对于此用例, HandlerThread原因如下: 我们的后台线程只是在... 如果UI线程不能足够快地处

    android+多线程机制的讲解和例子

    2.Handler:你可以构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;或者接收Looper(从Message Queue取出)所送来的消息。 3. Message Queue(消息队列):用来存放线程放入的消息。 4.线程:UI thread...

    Android 线程开发 开发实例

    些有Looper的线程,不管是UI线程还是子线程,只要你有Looper,我就可以往你的消息队列里面添加东西,并做相应的处理。 但是这里还有一点,就是只要是关于UI相关的东西,就不能放在子线程中,因为子线程是不能操作UI...

    android使用handlerthread创建线程示例

    在android开发中,一说起线程的使用,...这样创建的handler是在主线程即UI线程下的Handler,即这个Handler是与UI线程下的默认Looper绑定的。Looper是用于实现消息队列和消息循环机制的。因此,如果是默认创建Handler

    Android Handler多线程详解

    Android–多线程之Handler 前言  Android的消息传递机制是另外一种形式的“事件处理”,这种机制主要是为了解决Android应用中多线程的问题,在Android中不 允许Activity新启动的线程访问该Activity里的UI组件,...

    Android Handler的作用与用法

    子线程与主线程通过Handler来进行通信。子线程可以通过Handler来通知主线程进行UI更新。 Handler是Android中引入的一种让开发者参与处理线程中消息循环的机制。每个Hanlder都关联了一个线程,每个线程内部都维护了一...

    android_handler学习笔记

    Handler在android里负责发送和处理消息。它的主要用途有(或者是干什么的):  1)执行计划任务,按计划(定时)发送... 2)线程间通信,把从其他线程中发送来的消息放入消息队列中,避免线程冲突(常见于更新UI线程)

    android 服务组件多线程交互

    android 的service和activity是运行在UI主线程的。在android线程中,只有主线程即UI线程有自己的默认的消息队列。子线程需要创建自己的消息队列,并把消息发给队列,并循环起来,发给handler处理。

    android开发教程之子线程中更新界面

    每个Handler对象与创建它的线程相关联,并且每个...由于Android要求在UI线程中更新界面,因此,可以通过该方法在其它线程中更新界面。 通过Runnable在子线程中更新界面的例子 在onCreate中创建Handler 代码如下:p

    Android中Handler消息传递机制

    由于Android要求在UI线程中更新界面,因此,可以通过该方法在其它线程中更新界面。 出于性能优化考虑,Android的UI操作并不是线程安全的,这意味着如果有多个线程并发操作UI组件,可能导致线程安全问题。为了解决这...

    Android 消息队列模型详解及实例

    Android中除了UI线程(主线程),创建的工作线程默认是没有消息循环和消息队列的。如果想让该线程具有消息队列和消息循环,并具有消息处理机制,就需要在线程中首先调用Looper.prepare()来创建消息队列,然后调用...

    深入理解Android中的Handler异步通信机制

    一、问题:在Android启动后会在新进程里创建一个主线程,也叫UI线程(非线程安全)这个线程主要负责监听屏幕点击事件与界面绘制。当Application需要进行耗时操作如网络请求等,如直接在主线程进行容易发生ANR错误。...

    Android使用Handler实现定时器与倒计时器功能

    Handler的最常见应用场景之一便是通过Handler在子线程中间接更新UI。Handler的作用主要有两个:一是发送消息;二是处理消息,它的运作需要底层Looper和MessageQueue的支撑。MessageQueue即消息队列,它的底层用...

    PipelineThread-Looper:这旨在作为如何使用线程以及管道模式的示例

    这旨在作为如何将线程与管道模式一起使用的示例。 那么你可以用 Loopers 和 Handlers 做什么呢? 基本上,它们实现了一种常见的并发模式,我称之为管道线程。 这是它的工作原理: 管道线程持有一个任务队列,这些...

    Handler+Looper+MessageQueue+Message机制

    当子线程中进行耗时操作后需要更新UI时,通过Handler将有关的UI操作切换到主线程中执行。 四要素: Message(消息):需要被传递的消息,其中包含了消息标识(what),消息处理数据和处理对象(arg1,arg2,obj),发送...

    Android消息机制Handler的工作过程详解

    这个UI线程是在应用第一次启动时开启的,也称之为主线程(Main Thread),该线程专门用来操作UI组件,在这个UI线程中我们不能进行耗时操作,否则就会出现ANR(Application Not Responding)现象。如果我们在子线程中去...

    Android开源框架EventBusAndroid.zip

    如果当前线程是UI线程,事件会被加到一个队列中,由一个线程依次处理这些事件,如果某个事件处理时间太长,会阻塞后面的事件的派发或处理。onEventAsync:事件处理会在单独的线程中执行,主要用于在后台线程中执行...

    Android 面试宝典

    2)Handler:你可以构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;或者接收Looper从Message Queue取出)所送来的消息. 3) Message Queue(消息队列):用来存放线程放入的消息. 4)线程:UI thread通常...

    了解Android核心:Looper,Handler和HandlerThread

    所以了解创建无阻碍的响应式 UI 很重要。 MessageQueue 是一个队列,其中包含消息任务。 Handler 在 MessageQueue 中以任务形式排队,Looper 在任务出现时执行它们 MessageQueue. Looper 使线程保持活动状态,...

    android handler.post和handler.sendMessage的区别和联系

    通过看源码发现,post这个方法是把任务r转成一个message放进了handler所在的线程中的messageQueue消息队列中,并且是立刻发送的消息,这样它既不是异步的也不是延时的,所以问题来了: 1. 它和sendMessage()有什么...

Global site tag (gtag.js) - Google Analytics