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

Monodroid中的静态变量

该变量的作用域为您的进程,并且在进程重启后将失效(如果您没有额外的代码来保存/恢复该变量)。

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

如果你想保存/恢复该值,你应该子类化Android.App.Application并重写Application.OnLowMemory()和/或Application.OnTrimMemory(),并将该值保存到持久存储。然后你可以在Application.OnCreate()中恢复这个值。

(没有办法我知道实际上知道什么时候进程将被杀死- Application.OnTerminate()仅用于模拟器-但希望 Android将调用OnLowMemory()/OnTrimMemory()方法在它杀死进程之前…)