在Android应用程序中使用静态类变量是否安全

Ste*_*ing 4 android

我知道扩展Application类以提供全局存储的技术.但是在我的情况下,我正在为库函数编写一个类,所以不要强迫该类的用户沿着这条路走.我需要一些静态类变量.我已经看到在StackOverflow中传递引用可能不安全.但是我尝试使用同一个类的两个不同的应用程序,即使在多窗口模式下在Galaxy S3上并排运行两个应用程序时,静态类变量仍然是独立的.

因此,对Android内部人员有深入了解的人可以确认这是否安全.

如果它不安全,我可以将变量包装在嵌套类中,并使用应用程序包名称作为键将它们添加到Serializable静态HashMap中.这将迫使他们安全.但是,如果没有必要,那么我宁愿不去做.

Com*_*are 10

我已经看到在StackOverflow中传递引用可能不安全.

它们不是"安全的",因为您的流程将不时终止,从而消灭您的静态数据成员(以及您的自定义Application).因此,静态数据成员对缓存有好处,而不是其他.

在该范围内,它们是"安全的".

您只需确保将此数据存储在持久性(例如,文件)的某个位置,或者一旦进程终止并稍后再次启动就可以重新生成.这跟没有什么不同Application.

但是我尝试使用同一个类的两个不同的应用程序,即使在多窗口模式下在Galaxy S3上并排运行两个应用程序时,静态类变量仍然是独立的.

正确.这些是单独的进程,具有类和对象的单独副本.


Ale*_*ood 5

如果您的目标是在应用程序生命周期的曲折中存储持久性数据,那么我建议不要使用静态变量来执行此操作.这种方法的明显问题是,当操作系统决定回收内存时(即当屏幕休眠或不同的应用程序启动内存密集型任务时),它们很容易被系统垃圾收集.我不确定你要"存储"什么样的数据,但我建议保存状态SharedPreferencesSQLiteDatabase代替.