[英]Declaring variables as static within MainActivity and accessing them from other classes
為了開發一些重要的變量,例如getApplicationContext()或其他變量(例如Buttons或Edittexts) ,很多時候我一直在開發android應用程序,這些變量通常在MainActivity之外是不可訪問的,但在同一項目的其他一些類中卻是必需的 ,一直在使用這種技術,即
在MainActivity中 (對於getApplicationContext()情況) :
private static Context context = null;
在onCreate方法中,我這樣做:
context = getApplicationContext();
然后我使用以下方法訪問上下文(例如,顯示敬酒消息):
Toast.makeText(MainActivity.context,"Message",Toast.LENGTH_LONG).show();
在我的另一堂課上。 類似地, 獲取或設置 EditText變量中的文本,依此類推。
我的問題是:
1)這是確定問題的最佳方法嗎?
2)如果沒有,還有更好的方法嗎?
3)如果否,該技術的缺點是什么?
3)可以將相同的技術擴展到維護性中的功能嗎?
編輯 :我這里不需要其他活動,而我只是把應用分成不同的類(或對象)的任務。
我的問題是:
1)這是確定問題的最佳方法嗎?
不,這不是解決此問題的最佳方法。
2)如果沒有,還有更好的方法嗎?
是的,要保存靜態信息,您應該使用類似headless的片段,以便android框架可以處理未使用的類和數據上的垃圾回收
3)如果否,該技術的缺點是什么?
缺點很多:)首先,內存泄漏會導致無法完全回收靜態var,因此它會保留在內存中。 其次,您不應該在其他地方使用main活動中的編輯文本,因為不會保證mainactivity仍然存在,因為如果您離開它,android可能會殺死它以節省內存。 所有屏幕都應該是獨立的,並且必須使用intent和Bundles()傳輸數據
3)可以將相同的技術擴展到維護性中的功能嗎?
創建位於靜態類(如助手)中的單獨的助手類。 MainActivity不是靜態類,也不應該是靜態類
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.