android学习9——Handler简单用法

Handler用来发消息和处理消息.典型的用法是更新界面.android不允许在子线程里面更新界面,通常是把Handler传到子线程中,在子线程里通过sendEmptyMessage函数发消息.Handler的handleMessage函数响应消息,实现更新界面.
下面看一个例子.Handler的定义如下:

public class PlayHandler extends Handler {
    private ImageView imageView;
    int currentImageId = 0;
    private int[] imageIds = new int[] {
            R.drawable.java,
            R.drawable.ee,
            R.drawable.ajax,
            R.drawable.xml,
            R.drawable.classic
    };
    public PlayHandler(ImageView imageView) {
        this.imageView = imageView;
    }
    @Override
    public void handleMessage(android.os.Message msg) {
        if (msg.what == Message.PLAY) {
            imageView.setImageResource(imageIds[currentImageId++
                    % imageIds.length]);
        }
    }
}

函数handleMessage用于处理消息,改变ImageView的内容.需要更新的时候只用拿到Handler的实例,调用sendEmptyMessage之类的函数即可.代码如下所示.

public class PlayTimerTask extends TimerTask {
    private Handler handler;

    public PlayTimerTask(Handler handler) {
        this.handler = handler;
    }
    @Override
    public void run() {
        handler.sendEmptyMessage(Message.PLAY);
    }
}

源代码地址:https://github.com/zhouyang209117/AndroidTutorial/tree/master/Crazy/ch3/HandlerMsg

原文地址:https://www.cnblogs.com/zhouyang209117/p/5108048.html