Monodroid中的静态变量

时间:2011-12-31 13:21:12

标签: c# static xamarin.android

我想知道在Mono for 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必须被回收时,操作系统最终会重置该值?

谢谢,

阿德里安

1 个答案:

答案 0 :(得分:2)

变量的范围限定在您的流程中,并且在流程重启后无法生效(缺少保存/恢复变量的其他代码)。

这与Java没有什么不同。 : - )

如果要保存/恢复该值,则应该继承Android.App.Application并覆盖Application.OnLowMemory()和/或Application.OnTrimMemory()并将值保存到持久存储。然后,您可以在Application.OnCreate()内恢复此值。

(我无法确切知道该进程何时被杀死 - Application.OnTerminate()仅适用于模拟器 - 但希望 Android会调用{{1} } / OnLowMemory()方法杀死进程之前......)