`
liangoogle
  • 浏览: 276645 次
  • 性别: 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);

 

 

 

    }

分享到:
评论

相关推荐

    ndroid异步处理一:使用Thread+Handler实现非UI线程更新UI界面

    为了解决这个问题,Android提供了多种异步处理机制,其中一种常见的方式是使用`Thread`配合`Handler`来实现非UI线程执行耗时任务并更新UI。本篇将详细介绍这一方法。 首先,我们需要理解Android的线程模型。Android...

    Android_Handler的线程队列Demo

    这个"Android_Handler的线程队列Demo"旨在演示如何有效地利用Handler来处理线程间的通信,特别是主线程(UI线程)与工作线程之间的交互。下面我们将深入探讨相关知识点。 首先,了解Handler的基本概念。Handler是...

    android 更新 UI 线程 handler

    在Android开发中,更新UI(用户界面)是一个常见的任务,但是由于Android的主线程(也称为UI线程)是负责处理用户交互和绘制界面的,所以直接在后台线程进行UI更新可能会导致程序崩溃或者界面卡顿。为了解决这个问题...

    无界面的UI线程交互

    而在Android中,通常会使用Handler, MessageQueue和Looper的组合来实现UI线程与工作线程之间的通信。 具体步骤如下: 1. **创建后台线程**:首先,我们需要创建一个无界面的UI线程,它会在后台运行,执行计算或其他...

    Looper和Handler实现UI线程和子线程的通信

    由于Android系统规定所有的UI操作必须在主线程(也称为UI线程)中执行,因此当需要在后台子线程进行耗时操作(如网络请求、数据库操作等)时,就需要一种机制来实现与UI线程的通信,以便更新UI。Looper和Handler正是...

    工作线程 UI线程实例

    在软件开发中,尤其是涉及到图形用户界面(GUI)的应用程序,理解和正确使用工作线程(Worker Thread)与UI线程(User Interface Thread)是至关重要的。工作线程和UI线程各自扮演着不同的角色,它们之间的协作确保...

    android-Handler的使用

    Handler 可以在子线程中创建,但它的实例通常与主线程关联,因为它需要在主线程中执行任务,以便安全地更新 UI。子线程通过调用 `sendMessage()` 或 `post()` 方法将 `Message` 对象或 `Runnable` 对象发送到 ...

    安卓UI线程机制 ,在子线程中访问UI

    在Android系统中,UI线程(也称为主线程)是应用程序与用户交互的主要通道,它负责处理所有的用户界面更新和事件响应。理解Android的UI线程机制至关重要,因为错误地在非UI线程中操作UI组件会导致应用崩溃或出现不...

    handler线程

    ### Handler线程在Android中的应用及心得 #### 一、Handler机制概述 Handler机制是Android系统中用于处理消息和线程通信的重要组成部分。它主要由四个核心组件组成:`Looper`、`Handler`、`MessageQueue` 和 `...

    Android的线程使用来更新UI

    在Android开发中,由于UI操作必须在主线程(也称为UI线程)中进行,因此在后台线程处理任务并更新界面时需要遵循特定的机制。以下是对标题和描述中涉及知识点的详细解释: 1. **线程模型**: Android系统采用单...

    android 多线程 looper handler

    如果我们需要在子线程中操作 UI,那么我们需要使用 Handler 来将消息发送到 UI 线程中,然后在 UI 线程中处理消息。 在多线程编程中,我们需要注意线程的同步问题。我们可以使用锁机制来实现线程的同步。例如,我们...

    Android----线程实现图片移动

    主线程,也被称为UI线程,负责处理所有的用户交互,如触摸事件和UI更新。为了在不影响主线程的情况下执行耗时的操作,我们通常会创建子线程。在这个场景中,我们将在线程中处理图片的移动逻辑。 1. **创建线程**: ...

    Android_子线程创建消息队列更新UI

    总之,Android应用开发中,正确处理子线程与UI线程的交互是非常重要的。通过理解和运用消息队列机制,我们可以确保应用的响应性和稳定性,同时避免潜在的性能问题。学习并熟练掌握Handler、Looper和Message的使用,...

    Android中UI线程与后台线程交互的探讨.pdf

    Handler是Android中实现UI线程与后台线程交互的一个关键组件。它运行在主线程中,用于接收和处理来自其他线程的消息。子线程可以通过创建Message对象并将数据放入其中,然后通过Handler的`post()`或`sendMessage()`...

    Android 线程更新UI

    4. **Handler/Looper**:创建一个Handler对象,与主线程的Looper关联,通过Handler发送消息或Runnable对象到消息队列,Looper会按照顺序在主线程中执行这些任务。 5. **IntentService**:单线程服务,自动管理生命...

    玩转Android---组件篇---Handler的使用

    2. 当需要在后台线程执行任务时,可以创建一个Runnable对象,并使用Handler的`post()`方法将其添加到线程队列: ```java Runnable updateThread = new Runnable() { @Override public void run() { // 执行耗时...

    Handler使用

    在Android开发中,`Handler`是一个至关重要的组件,主要用于解决线程间的通信问题,尤其是在UI线程和其他工作线程之间。本篇文章将深入探讨`Handler`的使用方法,包括其基本概念、工作原理以及如何避免内存泄露和...

    利用Handler来更新android的UI

    在Android应用启动时,主线程(也称为UI线程)会默认创建一个`Looper`对象,该`Looper`会不断循环地从`MessageQueue`中取出消息并分发给相应的`Handler`进行处理。 1. 创建Handler 首先,你需要创建一个`Handler`...

    Android Handler定时更新UI

    Android应用的主要执行线程被称为“主线程”或“UI线程”,它负责处理用户交互和更新UI。然而,长时间运行的任务(如网络请求或数据库操作)不应在主线程中执行,因为这可能导致应用无响应。为了解决这个问题,...

    UI线程

    Handler创建在UI线程,它发送消息到Looper队列,Looper在UI线程中循环读取并分发消息,从而允许非UI线程更新UI。 4. **AsyncTask**:Android提供的一种轻量级异步任务类,用于在后台线程执行任务并在完成时更新UI。...

Global site tag (gtag.js) - Google Analytics