3

複数のアクティビティからアクセスしたい変数を格納するように Application を拡張するクラスを作成しました

public class MyApplication extends Application 
{
private String fbId, firstName;
private long expires;

@Override
public void onCreate() 
{
    super.onCreate();
}

public String getFbId() 
{
    return fbId;
}

public void setFbId(String fbId) 
{
    this.fbId = fbId;
}

public String getFirstName()
{
    return firstName;
}

public void setFirstName(String firstName) 
{
    this.firstName = firstName;
}

アプリを初めて実行するときに、これらの変数にアクセスしてこれらの変数を設定できます。アプリケーションを終了して再起動すると、値が null に設定されます。なぜこれが発生するのかについての提案はありますか?

4

3 に答える 3

4

データをストレージに保存しない場合 (データベースである必要はなく、フラット ファイル、SharedPreferences などでもかまいません)、データは永続的ではありません。

SharedPreferencesこの種の永続データを保存するために使用する必要があります。

SharedPreferences クラスは、プリミティブ データ型の永続的なキーと値のペアを保存および取得できる一般的なフレームワークを提供します。SharedPreferences を使用して、boolean、float、int、long、string などのプリミティブ データを保存できます。このデータは、ユーザー セッション間で保持されます (アプリケーションが強制終了された場合でも)。

于 2012-05-23T05:32:07.643 に答える
0

戻ってきたときに必要な場合は、データを永続化することをお勧めします。SharedPreference、Local Files、sqliteなど、同じものに異なるストレージメディアを使用できます。ここを参照してください

于 2012-05-23T05:33:49.210 に答える
0

どの言語でも変数を永続化する方法はありません。プログラムのライフ サイクルが終了する限り、すべての変数が破棄され、メモリが RAM/ヒープ メモリから解放されます。

永続化のために、次のオプションがあります。

  1. ファイルシステム
    • シンプルなファイル形式 (例: .txt )
    • カンマ区切りのファイル形式 (例: .csv )
  2. データベース
    • Sqlite (Androidの場合)
    • RMS (Java ME、BlackBerry の場合)
  3. プログラミング言語でサポートされている永続ストレージ
    • 共有設定

変数の値を上記のメカニズムのいずれかに格納することによってのみ、値を永続化できます。

于 2012-05-23T05:33:20.967 に答える