2011-12-31 65 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()方法,它殺死的過程之前... )