0

パブリック静的メンバーのみを含むパブリック クラスがあります。

これが最善の方法ではないことはわかっていますが、Androidでアプリケーションを一時停止し、他のいくつかを開いて戻ってくると、すべての変数が(null)のように見えるのはなぜだろうと思っていました。

質問:

  1. Androidが作った何らかのメモリ解放のせいでしょうか?
  2. それでは、そのような変数を保持するためのより良い方法は何でしょうか?
  3. アプリケーションを拡張するクラスは良い選択肢ですか?

これが私のコードです:

public class Session {

public static String ID = null;
public static String UNIQID = null;
public static String TOKEN = null;
public static String SESSIONID = null;
}
4

2 に答える 2

1

アプリケーション プロセスはいつでも破棄される可能性があるため、これらの静的インスタンスは実際にガベージ コレクションされる可能性があります。

これらの静的変数をカスタム Application オブジェクトに配置すると、アプリケーションが (再) 作成されるたびにアプリケーションの onCreate 関数で初期化しない限り、同じことが適用されます。

SharedPreferences または SQLite データベースを使用して永続データを追跡する必要があります。

これらの変数が複雑すぎて格納できない場合は、シングルトンの使用を検討することをお勧めします (Application のサブクラス化は以前ほど推奨されていません)。

public class MySingleton {

  public static MySingleton getInstance(Context context) {
    if (instance==null) {
      // Make sure you don't leak an activity by always using the application
      // context for singletons
      instance = new MySingleton(context.getApplicationContext());
    }
    return instance;
  }

  private static MySingleton instance = null;

  private MySingleton(Context context) {
    // init your stuff here...
  }

  private String id = null;
  private String uniqueId= null;
  private String token = null;
  private String sessionId = null;
}
于 2012-10-16T15:17:22.910 に答える
0
  1. はい、Android は必要に応じてメモリを収集する場合があります

  2. SharedPreferences のようなものかもしれません

于 2012-10-16T15:16:00.273 に答える