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

此篇运用另外一种方法去实现,废话不多说,直接贴代码。
实现的大概思想就是:在子线程只发送一个空消息,不采用循环方法。切换图片在主线程,并且在里面自发自收消息。

 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;
    int num =0;
    /*
     * 注意:初始化Handler对象的时候,千万不要再new Handler()后面直接加;
     *
     * 一定要将handleMessage方法作为该对象重写的方法,放到该对象对应的{}内
     * 格式上与直接new 接口对象非常相似
     * */
    Handler handler = new Handler(){

        @Override
        public void handleMessage(Message msg) {

            if (msg.what == 0) {
                iv.setImageResource(images[num % images.length]);
                num++;

                //等待参数二指定的毫秒值后发送空消息0
                /*
                 * 参数1:发送的空消息的id唯一标识
                 * 参数2:等待的时间
                 * */
                handler.sendEmptyMessageDelayed(0, 2000);

                /*
                *   对应handler的方法  不在此多做介绍,基础代码整理完之后,还会再写一篇理论的知识
                * */

                /*
                 * 在指定时间点发送空消息
                 * 1:该消息的唯一标识
                 * 2:发送消息的准确时间对应的毫秒值
                 * */
//              handler.sendEmptyMessageAtTime(0, System.currentTimeMillis()+1000);
            }

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

    }
 //模拟按钮  进行耗时操作
    public  void  changImage(View v) {

        switch (v.getId()) {

            case R.id.button1:   // 开始启动图片的切换

                new Thread(){

                    @Override
                    public void run() {

                        try {
                            sleep(1000);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        handler.sendEmptyMessage(0);
                    }
                }.start();

                break;
            case R.id.button2 :   //停止切换图片
                /*
                 * 停止发送标识符为0的消息
                 * 实际上是从消息队列中移除标识符为0的消息
                 * */
                handler.removeMessages(0);
                break;
         }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值