2011-12-31 13 views
1

Androidアプリケーション用のMonoのビジネスエンティティの長期保存として静的変数を使用するのが安全かどうかを知りたいと思います。例えば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に頼ることができるか、その値は、最終的にリセットされます私のアプリが範囲外になり、RAMをリサイクルしなければならないときは、OSによって?

おかげで、

エイドリアン

答えて

2

は、変数は、プロセスにスコープされ、そしてプロセスの再起動(変数を保存/復元するためにあなたの部分上には存在しない追加のコードを)生き残れないだろう。

これはJavaと変わりません。 :-)

値を保存/復元する場合は、Android.App.Applicationをサブクラス化し、Application.OnLowMemory()および/またはApplication.OnTrimMemory()を上書きし、その値を永続ストレージに保存する必要があります。この値をApplication.OnCreate()の範囲内で復元することができます。

(私は、プロセスが殺されるときに実際に知っているの知っている方法はありません - Application.OnTerminate()だけエミュレータのためである - それは、プロセスを殺す前に、しかしうまくいけばアンドロイドはOnLowMemory()/OnTrimMemory()メソッドを呼び出します... )