我有一個多活動應用程序並將數據保存在許多其他活動使用的主菜單活動。靜態變量真的是安全的跨應用程序中的活動android
我的一個主要活動的變量可能是這個
static double targetAngle = 45;
我可能會調用該變量從另一個活動這樣
diff = Main.targetAngle - angle;
或者我可以把它像這樣
Main.targetAngle = angle;
從這個參考,http://developer.android.com/guide/faq/framework.html這似乎是一個正確的方式來傳遞數據。但是總是有關於隨時被操作系統殺死的活動的討論。
我的問題是,這是否安全?
作爲一種替代方案,我在SO成員的建議下,有一個名爲Helper的類,它有一些用於每個活動的函數,這些函數也有一些靜態數據。舉例來說,輔助類有這個數據,然後我的功能
public class Helper {
static double[] filter1 = new double[]{0,0,0,0,0};
static double[] filter2 = new double[]{0,0,0,0,0};
static double cog = 0;
...
various functions....
}
我可以保存在輔助類我的共享變量是否會更好。這個課程每秒被調用一次,如果它被殺死了,我已經死了,真的需要重新思考。我應該提到,我對自己的工作沒有任何問題,但是我的一個用戶正在進行Nexus-7的崩潰,我們不知道爲什麼所以我認爲他可能會運行比我更多的應用程序,因此我的問題。
我還應該提到,如果用戶退出應用程序,我已經保存了任何需要保存在SD卡上的文件中的變量,以便它們可以重新加載。換句話說,應用程序被終止時丟失的數據不是問題。我的問題是,如果我的主要活動在應用程序還活着時被殺害了。
活動類本身不會被操作系統破壞 - 類的實例可以實現。 因此,雖然您的活動實例可能會收集onDestroy回調和垃圾回收,但該Activity類的公共靜態變量仍將保留。 – selbie
**「我的問題是,這是否安全?」** - 不!切勿在'Activity'中創建公共靜態字段(或方法)。始終使用助手或將數據作爲活動之間的Intent附加項傳遞。 – Squonk
我認爲@selbie說這是可以的,Squonk說它不是。這很好奇。 –