Android開發慎用Static變量

Android開發慎用Static變量
static變量在類加載時被初始化,存儲在JVM的方法區中,整個內存中只有一個static變量的拷貝,可以使用類名直接訪問,也可以通過類的實例化對象訪問,一般不推薦通過實例化對象訪問,通俗的講static變量屬于類,不屬于對象,任何實例化的對象訪問的都是同一個static變量,任何地放都可以通過類名來訪問static變量。

基于以上的特性,在Android中通過static變量或者static函數來作為數據傳輸或作為更新UI的接口,使用起來很便捷,但是存在很大隱患。首先static變量會在類卸載的時候銷毀,類卸載最常見的場景是進程銷毀,在Android中進程銷毀場景更常見。特別是在Activity、Service等組件中定義的static更容易被回收,出現空指針異常。一般將使用的static變量定義在Application中,由于Application生命周期最長,所以static變量相對更安全,但也有不可靠的情況,所以在Android中要謹慎使用靜態變量,特別是在Activity和Service等組件中。 一般是能用靜態變量的盡量用單例代替,使用static的場景一般是定義常量( final static int a=1),和定義單例(private static SigleTon instance)的時候。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,105評論 25 708
  • 面試必背 會舍棄、總結概括——根據我這些年面試和看面試題搜集過來的知識點匯總而來 建議根據我的寫的面試應對思路中的...
    luoyangzk閱讀 6,800評論 6 173
  • 我想睡覺了,但500字還沒完成。又一次這樣趕,怎么辦?我本來早上是寫好一篇的,但覺得寫的不怎么樣所以保存私密文章了...
    ab7d12e1cf84閱讀 305評論 1 0
  • 1.感恩父母賜予我生命! 2.感恩我的家婆為我們付出了那么多! 3.感恩世界萬物! 4.感恩所有幫助過我的人! 5...
    彭焱娟閱讀 124評論 0 0
  • “你工作找的怎么樣了?”,羊的小舅看似不經意但又語重心長一句問話。他手里捧著碗吃晚飯,對著客廳沙發上在看電視的羊說...
    LonelyGod_383c閱讀 291評論 0 0