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

posted on   荷楠仁  阅读(290)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义

导航

统计

点击右上角即可分享
微信分享提示