Android 程式設計中,使用靜態變數有哪些缺點?應該如何規範使用?

時間 2021-05-31 13:23:35

1樓:Stanley Luo

關於Android 使用靜態變數,我遇到過的情況是:當應用不處於與當前使用者互動的情況時(例如回到HOME,跳到其他應用),離開的時間比較長時,應用的靜態變數有可能被置null, 是不保險的。

2樓:郭勳

我好像使用static比較多的只有兩個地方,乙個是用static final定義常量,乙個是單例模式時。

static訪問是無法跨程序的。Android中的Activity,Service是可以在各自程序中執行的,用static傳遞引數到不同程序的Activity、Service時會錯。

Android Bundle是可以跨程序傳遞資料的。覺得還是使用Intent傳遞資料為好。

Android中乙個比較好的設計是,盡量讓上層不關注程序之類的東西,Activity,Service,Provider都是乙個個元件。Activity、Service中使用Bundle傳遞機制接收引數,讓其可以提供服務給手機裡所有程式。

用static傳遞引數時,static定義的變數必然會設定為public或包內可訪問許可權。如果在其它類中被任意修改,程式肯定會亂。覺得不符合設計原則。

靜態變數是為了解決什麼問題而存在的?

小小何先生 對這個問題的補充描述如下 它提供了什麼好處?有什麼場景需要使用到它?我在搜尋引擎搜到的都只是說什麼語法方便.還有編譯方面的實現之類的這些內容.但是我關心的是它是為了什麼而誕生的?好!好乙個只關心為了什麼而誕生的!說一下c 中的靜態變數吧!程式在處理的時候,都是處理資料,或者稱之為變數。變...

全域性靜態變數,互斥訊號量等在記憶體中是怎麼處理?

L1和L2 Cache之間有Coherency protocol的。MESI裡面乙個Cache打算改乙個變數的時候會通知別的Cache,並令後者中的變數副本失效。這樣可以保證所有的Cache都能看到同樣的變數值。針對Mutex這種變數還有額外的硬體實現,來保證在任一時刻最多只有乙個CPU獨佔地對乙個...

c 函式區域性靜態變數第二次被訪問的時候具體做了些什麼?

Atlantis 別的不知道用g 測試了一下單例標記 雙檢測鎖,只是加乙個bool標記是否初始化的話,如果在建構函式裡加個sleep,還是還是會出問題.include include using namespace std class A A singleon void do something i...