Monodroid中的静态变量
本文关键字:变量 静态 Monodroid | 更新日期: 2023-09-27 18:19:12
我想知道它是否安全使用静态变量作为业务实体的长期存储在Mono Android应用程序。
例如,如果我有这样一个类:
public class Test{
public static int MyStaticVariable{get;set;}
}
在我的主活动中,我有这个代码
protected override void OnCreate(Bundle bundle)
{
...
if (Test.MyStaticVariable){
Test.MyStaticVariable=666;
}
}
我可以总是依赖Test.MyStaticVariable==666
,或者当我的应用程序超出范围并且RAM必须回收时,该值最终会被操作系统重置吗?
谢谢,Adrian
该变量的作用域为您的进程,并且在进程重启后将失效(如果您没有额外的代码来保存/恢复该变量)。
这与Java没有什么不同。: -)
如果你想保存/恢复该值,你应该子类化Android.App.Application并重写Application.OnLowMemory()和/或Application.OnTrimMemory(),并将该值保存到持久存储。然后你可以在Application.OnCreate()中恢复这个值。
(没有办法我知道实际上知道什么时候进程将被杀死- Application.OnTerminate()
仅用于模拟器-但希望 Android将调用OnLowMemory()
/OnTrimMemory()
方法在它杀死进程之前…)