原创文章,转载中注明转载地址: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
静态变量的使用,滥用容易导致类生命周期变长,很难管理被回收。也更容易导致内存泄露
网友评论