android 应用程序中的活动中的静态变量是否真的安全

All*_*rds 6 java android

我有一个多活动应用程序,并将数据保存在许多其他活动使用的主菜单活动中。

我在主要活动中的变量之一可能是这个

static double targetAngle = 45;
Run Code Online (Sandbox Code Playgroud)

我可能会从这样的另一个活动中调用该变量

diff = Main.targetAngle - angle;
Run Code Online (Sandbox Code Playgroud)

或者我可以这样设置

Main.targetAngle = angle;
Run Code Online (Sandbox Code Playgroud)

从这个参考,http://developer.android.com/guide/faq/framework.html这似乎是传递数据的正确方法。但是总是有关于活动在任何时候被操作系统杀死的话题。

我的问题是,这是否安全?

作为替代方案,我在 SO 成员的建议下有一个名为 Helper 的类,它具有一些在每个活动中使用的函数,这些函数也有一些静态数据。例如,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....
}
Run Code Online (Sandbox Code Playgroud)

如果这样会更好,我可以将我的共享变量保存在该帮助程序类中。该类每秒调用一次,如果它被杀死,我就死了,真的需要重新考虑一下。我应该提到我对我所做的事情没有任何问题,但是我的一个用户的 Nexus-7 崩溃了,我们不知道为什么,所以我认为他运行的应用程序可能比我多,因此我的问题.

我还应该提到,如果用户退出应用程序,我已经保存了所有需要保存在 SD 卡上的文件中的变量,以便它们可以重新加载。换句话说,当应用程序被杀死时数据丢失不是问题。我的问题是仅当应用程序还活着时我的主要活动是否被终止。

All*_*rds 3

感谢 Selbie 和 Quank 在评论中的回答。由于缺乏官方答案,我发布了自己的答案,因为我想结束这个问题。

我的结论是,根据这篇文章 在 Android 中使用静态变量,静态变量本身不会被破坏,我所做的事情是安全的。
这篇文章,清除静态数据 onDestroy()指出“只要类被加载,静态变量的值就会持续存在......Android 卸载类的唯一原因是你的应用程序从内存中完全删除” ”

然而,正如底部注油所指出的那样,这可能不是一个好的做法。使用不是活动的类来托管静态全局变量和常用函数可能是更好的做法,并且更容易维护并且通常更干净。我将朝这个方向前进,因为它还有其他优点。

无论哪种情况,很明显,当应用程序被销毁时,变量将被重新初始化并且需要手动重置。就我而言,我将数据以文件形式存储在 SD 卡上,这是保存数据的几种方法之一。

我通过新的谷歌搜索找到了上述链接。显然,我应该早点用该措辞进行搜索,但我的搜索没有返回有用的结果,主要是找到单例与应用程序扩展的争论。