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

Handler的使用

阅读更多
package android.handler;  
  
import android.app.Activity;  
import android.os.Bundle;  
import android.os.Handler;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
  
public class HandlerTest extends Activity {  
    /** Called when the activity is first created. */  
    private Button startButton;  
    private Button endButton;  
      
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        //根据id获得控件对象  
        startButton = (Button)findViewById(R.id.startButton);  
        endButton = (Button)findViewById(R.id.endButton);  
        //为控件设置监听器  
        startButton.setOnClickListener(new StartButtonListener());  
        endButton.setOnClickListener(new EndButtonListener());  
    }  
      
    class StartButtonListener implements OnClickListener{  
        public void onClick(View v) {  
            //调用Handler的post()方法,将要执行的线程对象放到队列当中  
            handler.post(updateThread);  
        }  
    }  
      
    class EndButtonListener implements OnClickListener{  
        public void onClick(View v) {  
            //调用Handler的removeCallbacks()方法,删除队列当中未执行的线程对象  
            handler.removeCallbacks(updateThread);  
        }  
          
    }  
      
    //创建Handler对象  
    Handler handler = new Handler();  
    //新建一个线程对象  
    Runnable updateThread = new Runnable(){  
        //将要执行的操作写在线程对象的run方法当中  
        public void run(){  
            System.out.println("updateThread");  
            //调用Handler的postDelayed()方法  
            //这个方法的作用是:将要执行的线程对象放入到队列当中,待时间结束后,运行制定的线程对象  
            //第一个参数是Runnable类型:将要执行的线程对象  
            //第二个参数是long类型:延迟的时间,以毫秒为单位  
            handler.postDelayed(updateThread, 3000);  
        }  
    };  
}  


package android.handler;  
  
import android.app.Activity;  
import android.os.Bundle;  
import android.os.Handler;  
import android.os.Message;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
import android.widget.ProgressBar;  
  
public class ProgressBarHandlerTest extends Activity {  
    /** Called when the activity is first created. */  
      
    private ProgressBar progressBar;  
    private Button startButton;  
      
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
          
        progressBar = (ProgressBar)findViewById(R.id.progressbar);  
        startButton = (Button)findViewById(R.id.startButton);  
          
        startButton.setOnClickListener(new ProgressBarOnClickListener());  
    }  
      
    class ProgressBarOnClickListener implements OnClickListener{  
        public void onClick(View v) {  
            //设置进度条为可见状态  
            progressBar.setVisibility(View.VISIBLE);  
            updateBarHandler.post(updateThread);  
        }  
    }  
      
    //使用匿名内部类来复写Handler当中的handlerMessage()方法  
    Handler updateBarHandler = new Handler(){  
        @Override  
        public void handleMessage(Message msg) {  
            progressBar.setProgress(msg.arg1);  
            updateBarHandler.post(updateThread);    //将要执行的线程放入到队列当中  
        }  
    };  
      
    //线程类,该类使用匿名内部类的方式进行声明  
    Runnable updateThread = new Runnable(){  
        int i = 0;  
        public void run() {  
            // TODO Auto-generated method stub  
            System.out.println("Begin Thread");  
            i+=10;  
            //得到一个消息对象,Message类是android系统提供的  
            Message msg = updateBarHandler.obtainMessage();  
            //将Message对象的arg1参数的值设置为i  
            msg.arg1 = i;   //用arg1、arg2这两个成员变量传递消息,优点是系统性能消耗较少  
            try{  
                Thread.sleep(1000); //让当前线程休眠1000毫秒  
            }catch(InterruptedException ex){  
                ex.printStackTrace();  
            }  
            //将Message对象加入到消息队列当中  
            updateBarHandler.sendMessage(msg);  
            //如果i的值等于100  
            if (i == 100){  
                //将线程对象从队列中移除  
                updateBarHandler.removeCallbacks(updateThread);   
            }  
        }  
    };  
}  
分享到:
评论

相关推荐

    Handler使用

    本篇文章将深入探讨`Handler`的使用方法,包括其基本概念、工作原理以及如何避免内存泄露和实现定时任务。 ### 1. Handler基本概念 `Handler`是Android消息处理机制的核心部分,它与`Looper`和`Message`共同协作,...

    Handler使用相关的三个实例

    以下是关于Handler使用相关的三个实例所体现的知识点的详细解释: 1. **Handler的创建和工作原理** Handler的创建通常需要配合Looper。Looper是每个线程中的消息循环器,它负责接收并分发Message。在主线程中,...

    Android的Handler使用方法总结

    Android的Handler使用方法总结,不错的文档,跟大家分享分享

    handler使用例子(博客示例代码)

    本文将深入解析`Handler`的使用,以及结合`Thread`实现异步操作的具体示例。 首先,`Handler`是Android消息处理系统的核心组件,它主要用于发送和处理消息。`Handler`对象通常在主线程中创建,这样它可以处理与UI...

    安卓handler的使用

    本篇将详细讲解Handler的使用,包括如何创建Handler对象、如何发送和处理消息,以及主线程与子线程之间的消息传递。 首先,Handler的基本结构主要包括三部分:Handler对象、Looper循环器和Message消息对象。在...

    Handler的介绍和使用方法

    本篇将详细介绍`Handler`的原理、使用方法及其在实际开发中的应用。 `Handler`是Android消息处理机制的核心组件,它的主要作用是发送和处理消息。在Android系统中,主线程负责处理用户界面的所有操作,而耗时的操作...

    android-Handler的使用

    【Android Handler 使用详解】 Handler 是 Android 平台中用于处理线程间通信的关键组件,尤其在涉及 UI(用户界面)更新时,它扮演着至关重要的角色。在 Android 应用程序启动时,系统会默认创建一个主线程,也...

    android 中Handler 的几种写法

    1. **基本Handler使用** 基本的`Handler`使用通常涉及到创建`Handler`对象,然后在后台线程中通过`Looper`和`Message`与之交互。以下是一个简单的例子: ```java // 在主线程中创建Handler Handler mHandler = ...

    Android中的Handler的具体用法

    本文将深入探讨`Handler`的工作原理、如何使用以及它在Android应用程序中的实际应用。 `Handler`机制是Android系统为了实现线程间通信而设计的一种模式,主要包含三部分:`Handler`、`Message`和`Looper`。`Handler...

    Handler在子线程中的使用以及注意事项

    Handler在子线程中的使用以及注意事项

    Android多线程处理机制中的Handler使用介绍

    以下是一个简单的Handler使用示例: ```java public class MainActivity extends Activity { private TextView tv; private Handler handler; private static final int TURNTEXT = 1; @Override protected ...

    Handler机制及原理探究.pdf

    Handler使用简单功能强大,常被用作线程间传递消息的组件,而且还可以用于跨进程。 消息机制背后有包括Looper ,MessageQueue管理和分发消息的实现,同时在Native层也单独实现了一套类 似的机制,接收和处理Native...

    android开发教程之android的handler使用方法

    `Handler` 的使用方法通常涉及创建`Handler`对象、发送`Message`以及处理这些消息。在本教程中,我们将深入探讨`Handler`的工作原理及其在实际应用中的使用。 首先,让我们看一个简单的例子,假设我们想要每隔5秒钟...

    Android 多线程:使用Thread和Handler

    本篇文章将详细探讨如何在Android中使用Thread和Handler实现多线程通信,确保非UI线程能够安全地更新UI。 首先,Android应用程序的主线程(UI线程)主要负责管理用户界面,处理用户交互事件。主线程不允许执行长...

    handler的使用

    下面是一个简单的Handler使用示例: ```java class MainActivity extends AppCompatActivity { private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { // 这里是...

    Android开发笔记 Handler使用总结

    【Android开发笔记:Handler使用总结】 在Android应用开发中,Handler是处理线程间通信和UI更新的关键组件。当应用程序启动时,Android系统会默认创建一个主线程(UI线程),该线程主要负责管理界面中的UI控件,...

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

    以下是一个简单的Handler使用示例: 1. 创建一个Handler实例,通常在主线程中创建,这样它可以访问主线程的消息队列: ```java Handler handler = new Handler() { @Override public void handleMessage(Message ...

    Fragment与Activity使用Handler进行交互

    本文将深入探讨如何在Fragment和Activity之间使用Handler进行交互。 首先,了解Handler的基本概念。Handler是Android中的一个消息处理类,它主要用来处理运行在主线程中的Message对象。通过创建一个Handler实例并与...

Global site tag (gtag.js) - Google Analytics