Handler消息机制之基础代码运用篇(3)

此篇又是另外一种实现了,采用 handler.post(Runnable r); 去实现。

 int[] images = { R.drawable.pic0, R.drawable.pic1, R.drawable.pic2,
                        R.drawable.pic3, R.drawable.pic4, R.drawable.pic5, R.drawable.pic6,
                       R.drawable.pic7, R.drawable.pic8, R.drawable.pic9 };

     ImageView iv;
     Handler handler = new Handler();

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_two);
        iv = (ImageView)findViewById(R.id.imageView1);

    }
 private int num = 0;
    private Runnable r;
 //模拟按钮  进行耗时操作
    public  void  changImage(View v) {

        Log.i("===","=====  "+Thread.currentThread().getName());  //得到当前线程名字
        switch (v.getId()) {
            case R.id.button1:
                // 通过post方法告诉handler
                // 让其去执行参数中Runnable对象的run方法
                r = new Runnable() {

                    @Override
                    public void run() {
                        // 在这里可以直接操作UI页面
                        iv.setImageResource(images[num % images.length]);
                        num++;
                        // 等待1秒之后再次执行参数一的runnable对象对应的run方法
                        handler.postDelayed(this, 1000);
                    /*
                     * 注意,当前的代码,虽然看着实在子线程,但是通过currentThread方法获知
                     * 当前其实是主线程
                     * 在此处不要去执行时间太长的耗时的操作
                     * */
                        Log.i("===","===== ppo "+Thread.currentThread().getName());
                    }
                };
                handler.post(r);
                break;
            case R.id.button2:
                //将指定要执行的runnable对象移除,不再执行
                handler.removeCallbacks(r);
                break;
        }
    }

对于,代码里面出现的新的方法,再次不在多余赘述。后面将会理论知识出现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值