美文网首页
Android通过静态内部类构建Handler提示构造方法过时

Android通过静态内部类构建Handler提示构造方法过时

作者: freedom_he | 来源:发表于2020-07-09 18:28 被阅读0次

Android中通常使用Handler来进行不同线程间的通讯以及消息的异步处理,但在定义Handler时,为防止出现内存泄漏风险,最好的方式是通过构建静态内部类实现。

private MyHandler myHandler = new MyHandler(this);

private static class MyHandler extends Handler {
    WeakReference<MainActivity> mActivity;
    public MyHandler(MainActivity activity) {
        mActivity = new WeakReference<>(activity);
    }

    @Override
    public void handleMessage(Message msg) {
        // 处理消息...
    }
}

最近使用这种方式时MyHandler构造方法却出现提示:

Default constructor in android.os.Handler is deprecated

网上查询原因无果,跳转Handler.class发现有两种构造方法已经被标记为deprecated,包括:

@Deprecated
public Handler() {
    throw new RuntimeException("Stub!");
}

@Deprecated
public Handler(@Nullable Handler.Callback callback) {
    throw new RuntimeException("Stub!"); 
}

找到问题的原因之后,就可以想办法对对构造方法进行修改:

private MyHandler myHandler = new MyHandler(this.getMainLooper(), this);

private static class MyHandler extends Handler {
    WeakReference<MainActivity> mActivity;
    public MyHandler(@NonNull Looper looper, MainActivity activity) {
        super(looper);
        mActivity = new WeakReference<>(activity);
    }

    @Override
    public void handleMessage(Message msg) {
        // 处理消息...
    }
}

相关文章

  • Android通过静态内部类构建Handler提示构造方法过时

    Android中通常使用Handler来进行不同线程间的通讯以及消息的异步处理,但在定义Handler时,为防止出...

  • 设计模式 Builder 模式

    核心就是隐藏构造方法,通过一个静态内部类封装构造。隐藏构建过程。 主要使用于对象比较复杂的时候, Android中...

  • 深入分析 Handler机制源码

    在主线程中 通过匿名内部类 创建Handler类对象 分析Handler的构造方法 当创建Handler对象时,则...

  • 22 静态内部类

    一般 外围类访问静态内部类的方法是: 静态内部类就像一个外围类的静态成员 ,可以实例化它 通过内部类的构造方法...

  • Handler内存泄漏解决及原因分析(源码向)

    1.使用静态内部类和弱引用 自定义静态内部类继承Handler 因为静态内部类不能访问外部类的非静态方法,所以需要...

  • 建造者模式

    实现 总结 使用静态内部类和静态方法可以直接通过类方法调用 封装对象构建细节 适用于构建对象时有特殊逻辑操作

  • java基础

    异常及其分类: 反射机制概念: 内部类分为四种:静态内部类:可以定义静态变量,方法,构造方法,且不依赖于外部类实例...

  • Handler + Looper + MessageQueue详

    一、使用详解 (1)Handler使用 (2)Handler构造方法 Handler():构造函数将通过调用Loo...

  • 通过软引用解决Handler内存泄露的问题

    通过软引用解决Handler内存泄露的问题 下面对软引用使用的方式适用于任何内部类,严格来说是通过软引用解决静态内...

  • 内存泄露-问题分析

    Handler 匿名内部类、非静态内部类 如何避免 1:使用静态内部类,加上static 修饰 2:使用WeakR...

网友评论

      本文标题:Android通过静态内部类构建Handler提示构造方法过时

      本文链接:https://www.haomeiwen.com/subject/xvwscktx.html