1. 程式人生 > >獲取某一特定Activity例項的方法

獲取某一特定Activity例項的方法

獲取記憶體中可能存在的特定Activity例項

如何判斷某一 Activity 的例項 在當前記憶體中是否存在,這樣做的意義在於,當我們想要在某個 Activity 存在時,不讓某一事件發生。換一句話來說就是,把 sInstance != null 作為一個判斷條件。目的達到。這只是 Activity 例項的一種用法。當然可以用這個例項來得到它本身就有的一些資料。下面說一下具體做法。

1, 定義一個靜態的型別為 Activity 的引用:sInstance

  • public static Activity sInstance = null;
    • 可以通過類名直接呼叫
    • 這個引用放在了靜態區,會優先載入且存在很長一段時間。
    • Java裡面是沒有全域性變數的,通過使用關鍵字 static 可以得到一個偽全域性變數,可以用來追蹤一些比較麻煩的例項的生命週期。它對於記憶體我影響我還不是很清楚,但是這是一種很好的想法。

2, 在 ActivityonCreate() 方法中,對 sInstance 進行賦值操作,將例項傳過去。

  • sInstance = this;

3, 在 ActivityonDestroy() 方法重新對 sInstance 進行賦值,避免出現記憶體洩漏。更像是例項被銷燬的標誌。

  • sInstance = null;

4, 得到這個可能存在的例項:通過類名直接呼叫

  • ClassName.sInstance 即為可能存在的例項。

總結

這只是獲取例項的一個方法,很容易理解。但是不建議大量使用,因為這樣會有很多的 static 變數。我個人感覺還行,可能別人不習慣吧。要用的話還是和同事多商量商量。另外,不要把 Activity 寫成 SingleInstance 的形式,不要忘了。 Activity 是有一個叫做 LauncherMode 的東西的。直接把在 Manifest.xml 裡把模式設定成單例模式即可。