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

来源:互联网 发布:vm安装linux虚拟机 编辑:程序博客网 时间:2024/06/05 05:24

此篇又是另外一种实现了,采用 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
原创粉丝点击