獲取某一特定Activity例項的方法
阿新 • • 發佈:2019-01-22
獲取記憶體中可能存在的特定Activity例項
如何判斷某一
Activity
的例項 在當前記憶體中是否存在,這樣做的意義在於,當我們想要在某個Activity
存在時,不讓某一事件發生。換一句話來說就是,把sInstance != null
作為一個判斷條件。目的達到。這只是Activity
例項的一種用法。當然可以用這個例項來得到它本身就有的一些資料。下面說一下具體做法。
1, 定義一個靜態的型別為 Activity
的引用:sInstance
public static Activity sInstance = null;
- 可以通過類名直接呼叫
- 這個引用放在了靜態區,會優先載入且存在很長一段時間。
- Java裡面是沒有全域性變數的,通過使用關鍵字
static
可以得到一個偽全域性變數
,可以用來追蹤一些比較麻煩的例項的生命週期。它對於記憶體我影響我還不是很清楚,但是這是一種很好的想法。
2, 在 Activity
的 onCreate()
方法中,對 sInstance
進行賦值操作,將例項傳過去。
sInstance = this;
3, 在 Activity
的 onDestroy()
方法重新對 sInstance
進行賦值,避免出現記憶體洩漏。更像是例項被銷燬的標誌。
sInstance = null;
4, 得到這個可能存在的例項:通過類名直接呼叫
ClassName.sInstance
即為可能存在的例項。
總結
這只是獲取例項的一個方法,很容易理解。但是不建議大量使用,因為這樣會有很多的
static
變數。我個人感覺還行,可能別人不習慣吧。要用的話還是和同事多商量商量。另外,不要把Activity
寫成SingleInstance
的形式,不要忘了。Activity
是有一個叫做LauncherMode
的東西的。直接把在Manifest.xml
裡把模式設定成單例模式即可。