《Android---handler小小优化问题》

将 Handler 声明成静态内部类

静态类不持有外部类的对象,所以 Activity 可以被正常的回收。但这个时候 Handler 无法操作 Activity 中的对象了,所以这个时候需要增加一个对 Activity 弱引用。代码如下:

static class MyHandler extends Handler {
    private WeakReference<Activity> reference;

    public MyHandler(Activity activity) {
        // 持有 Activity 的弱引用
        reference = new WeakReference<Activity>(activity);
    }

    @Override
    public void handleMessage(Message msg) {
        Activity activity = reference.get();
        if (activity != null && !activity.isFinishing()) {
            switch (msg.what) {
                // 处理消息
            }
        }
    }
}
发布了170 篇原创文章 · 获赞 55 · 访问量 37万+

猜你喜欢

转载自blog.csdn.net/w695050167/article/details/81384883