Kotlin與Android碰撞之美,其一,優(yōu)雅的Application(單例模式)

原創(chuàng)文章,轉(zhuǎn)載中注明轉(zhuǎn)載地址:http://www.itdecent.cn/p/1fdae52a7d8e

Java單例模式

回顧一下我們在Java中定義一個(gè) “單例” 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中交互調(diào)用 App.inst 方便極了。那個(gè)我們在 Java 中混用試試。用不了!報(bào)錯(cuò)了?


正確的使用方法(增加一個(gè)注解 @JvmStatic ,標(biāo)注我們在Java中是 static 變量):

class App : Application() {

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

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

建議

在Android開發(fā)中應(yīng)該盡量避免 static 靜態(tài)變量的使用,濫用容易導(dǎo)致類生命周期變長,很難管理被回收。也更容易導(dǎo)致內(nèi)存泄露

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容