gpt4 book ai didi

java - 静态变量在android应用程序中的 Activity 中真的安全吗

转载 作者:太空宇宙 更新时间:2023-11-03 10:47:35 30 4
gpt4 key购买 nike

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

我在主要 Activity 中的一个变量可能是这个

static double targetAngle = 45;

我可能会像这样从另一个 Activity 中调用该变量

diff = Main.targetAngle - angle;

或者我可以这样设置

Main.targetAngle = angle;

从这个引用,http://developer.android.com/guide/faq/framework.html这似乎是传递数据的正确方法。但是总是有人谈论 Activity 随时被操作系统杀死。

我的问题是,这样做安全吗?

作为替代方案,根据 SO 成员的建议,我有一个名为 Helper 的类,它有一些在每个 Activity 中使用的函数,也有一些静态数据。例如,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 卡上的文件中,以便可以重新加载它们。换句话说,当应用程序被杀死时数据丢失不是问题。我的问题只是当应用程序仍然存在时我的主要 Activity 是否被终止。

最佳答案

感谢 selbie 和 squonk 在评论中的回答。由于我想将其关闭,因此我发布了自己的官方答案。

我的结论是,根据这篇文章 Using static variables in Android ,静态变量本身并没有被破坏,我所做的是安全的。
此帖,Clearing Static data onDestroy()声明“只要类被加载,静态变量的值就会持续存在......Android 将卸载类的唯一原因是你的应用程序已完全从内存中删除”

但是,这可能不是 squonk 指出的良好做法。使用不是 Activity 的类来承载静态全局变量和常用函数可能是更好的做法,并且更易于维护且通常更清洁。我将朝着这个方向前进,因为它还有其他优势。

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

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

关于java - 静态变量在android应用程序中的 Activity 中真的安全吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20183129/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com