Kotlin与Android碰撞之美,其一,优雅的Application(单例模式)

原创文章,转载中注明转载地址:https://www.jianshu.com/p/1fdae52a7d8e

Java单例模式

回顾一下我们在Java中定义一个 “单例” Application

public class AppJava extends Application {

    private static AppJava inst;

    @Override
    public void onCreate() {
        super.onCreate();
        inst = this;
    }

    public static AppJava getInst() {
        return inst;
    }
}

那我们在Kotlin下呢?很简单,我们开始

Kotlin单例模式

class App : Application() {

    companion object {
        lateinit var inst: App
            private set
    }

    override fun onCreate() {
        super.onCreate()
        inst = this
    }
}

是不是很简单,在Kotlin中交互调用 App.inst 方便极了。那个我们在 Java 中混用试试。用不了!报错了?


正确的使用方法(增加一个注解 @JvmStatic ,标注我们在Java中是 static 变量):

class App : Application() {

    companion object {
        @JvmStatic lateinit var inst: App
            private set
    }

    override fun onCreate() {
        super.onCreate()
        inst = this
    }
}

建议

在Android开发中应该尽量避免 static 静态变量的使用,滥用容易导致类生命周期变长,很难管理被回收。也更容易导致内存泄露

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。