2011-12-31 145 views
1

我想知道在Mono for Android应用程序中使用静态变量作为业务实体的长期存储是否安全。Monodroid中的静态变量

举例来说,如果我有这个类:

public class Test{ 
public static int MyStaticVariable{get;set;} 
} 

,并在我的主要活动我有这样的代码

protected override void OnCreate(Bundle bundle) 
     { 
    ... 
    if (Test.MyStaticVariable){ 
    Test.MyStaticVariable=666; 
    } 
} 

我可以永远依靠Test.MyStaticVariable==666或将这个值是最终被重置操作系统,当我的应用程序超出范围和内存必须回收?

感谢,

阿德里安

回答

2

变量的作用域是你的进程,并且将无法生存重启进程(没有额外的代码在您的部分保存/恢复变量)。

这与Java没有区别。 :-)

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

(没有办法,我知道真正知道该过程将被杀死 - Application.OnTerminate()仅用于仿真器 - 但是希望 Android将调用OnLowMemory()/OnTrimMemory()方法,它杀死的过程之前... )