`

Android学习笔记_Handler的使用

 
阅读更多
Handler的使用:
例子:
public class HandlerActivity extends Activity{
  private Button startButton=null;
  private Button endButton=null;
  public void onCreate(Bundle saveInstanceState){
     super.onCreate(saveInstanceState);
     setContentView(R.layout.main);
     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(updateThread);
       }
   }
   class EndButtonListener implements OnClickListener{
       public void onClick(View v){
          handler.removeCallbacks(updateThread);
       }
   }
   Handler handler = new Handler();
   Runnable updateThread = new Runnable(){
      public void run(){
         System.out.println("UpdateThread");
         handler.postDelayed(updateThread,3000);
      }
   };
}


public class TestBarHandler extends Activity{
  
   ProgressBar bar=null;
   Button startButton=null;
   public void onCreate(Bundle saveInstanceState){
       super.onCreate(saveInstanceState);
       setContentView(R.layout.main);
       bar=(ProgressBar)findViewById(R.id.bar);
       startButton=(Button)findViewById(R.id.startButton);
       startButton.setOnClickListener(new ButtonListener());
   } 
   class ButtonListener implements OnClickListener{
       public void onClick(){
           bar.setVisibility(View.VISIBLE);
           updateBarHandler.post(updateThread);
       }
   }
   Handler updateBarHandler=new Handler(){
       public void handlerMessage(Message msg){
          bar.setProgress(msg.arg1);
          updateBarHandler.post(updateThread);
       }
   };
   Runnable updateThread =new Runnable(){
       int i=0;
       public void run(){
           System.out.println("Begin Thread");
           i=i+10;
           Message msg=updateBarHandler.obtainMessage();
           msg.arg1=i;
           try{
              Thread.sleep(1000);
           }catch(InterruptedException e){
              e.printStackTrace();   
           }
           updateBarHandler.sendMessage(msg);
           if(i==100){
              updateBarHandler.removeCallbacks(updateThread);
           }
       }
   };
}
分享到:
评论

相关推荐

    android_handler学习笔记

    Handler在android里负责发送和处理消息。它的主要用途有(或者是干什么的):  1)执行计划任务,按计划(定时)发送消息或执行某个Runnanble(使用POST方法);  2)线程间通信,把从其他线程中发送来的消息放入消息...

    Pro Android学习:了解Handler小例子

    这是Pro Android学习系列中Android Service部分的例子源代码。相关学习笔记见:http://blog.csdn.net/flowingflying/article/details/6212512

    android学习笔记之handler消息处理机制1

    在android中有一个规则:考虑到安全性,子线程不能动态的改变主线程中组件的属性值。 但为了执行一些耗时操作,往往会将它们放在子线程中,执行完毕要更新主线程中的UI,所以就有了handler消息处理机制。 handler就...

    android学习笔记

    3.android学习笔记--activity生命周期&handler使用 4.android学习笔记--HandlerThread和Bundle 5.android学习笔记--SQLite 6.android学习笔记--下载文件 7.android学习笔记--Content Provider 8.android学习笔记--...

    Android学习笔记.pdf

    适合有Java编程基础的同学使用。图文并茂,含有代码。包括环境搭建教程、创建模拟器、新建helloworld程序、电话拨号器、软件部署到模拟器、短信发送器、线性布局、相对布局、日志、activity、Android进程线程及...

    Android学习笔记之Handler处理机制的Looper

    Handler处理机制中,需要Looper来动态的进行循环,以此来不断将MessageQueue的数据取出。 在主线程中,Looper和MessageQueue已经在创建好的,因此我们不用自己创建它们就能用。 而在子线程中,如果我们想用Handler的...

    xamarin学习笔记A13(安卓Handler异步消息处理)

    xamarin学习笔记A13(安卓Handler异步消息处理)Android中只能在主线程进行UI操作,不能在子线程操作,要根据子线程执行的结果来更新UI时,需要用到安卓异步消息处理机制。

    android 学习笔记5-线程阻塞 UI更新

    1、查看网络上的图片 2、主线程阻塞-ANR 3、刷新UI-Handler 4、在本地缓存图片-例如微信的图片 5、获取开源代码 6、显示一个新闻客户端 7、使用GET方式提交表单数据 8、使用POST方式提交表单

    Android学习笔记

    个人学习Android的东西,绝对经典,不容错过,或许很多的问题你都会在我这里找到一种似曾相识的感觉,

    Android Handler机制的工作原理详析

    上一次写完Binder学习笔记之后,再去看一遍Activity的启动流程,因为了解了Binder的基本原理,这次看印象会更深一点,学习效果也比以前好很多。本来打算直接来写Activity的启动流程的,但总觉得Handler也需要写一下...

    Android代码-Android-performance-optimization

    android性能优化整理 android性能优化整理 本人学习使用的笔记 长期更新 欢迎star QQ879689064 Handler产生的内存泄露

    AndroidDemo:Android演示

    Android Demo, 学习过程中的一些笔记 chapter3 ~ chapter13 为 「Android 群英传」的 Demo ,做了部分修改并在上面增加了一些注释及评论用于备忘 art_Chapter[chapterNumber] 为 「Android 开发艺术探索」的 Demo ,...

    基于Bmob平台实现的记事本

    这是一个基于Bmob平台实现的记事本源码,代码中比较详细的注释解释了如何借助Bmob平台强大的后台处理功能实现...同时案例里面的侧滑菜单、自定义Adapter, ListView, Handler, 更新ListView等都是可供学习参考的。

    百度地图开发java源码-blog-backup:学习文章,也是我博客的备份

    学习时候,所做的一些笔记。方便之后复习查阅。 一. Notes for Algortihms 顺时针打印链表矩阵 链表中环的入口节点 树中两个节点的最低公共祖先 判断是否为平衡二叉树-解法二 机器人运动的范围 矩阵中的路径 滑动窗口...

Global site tag (gtag.js) - Google Analytics