1

そのため、sessionKeyなど、サーバーからデータを受信するプロジェクトに取り組んでいます。私はこのようなゲッターとセッターメソッドを作成しました:

public class sEngine
{
private static String sessionKey;

public static String getSessionKey() {
        return sessionKey;
    }

    public static void setSessionKey(
            String sessionKey) {
        sEngine.sessionKey = sessionKey;
    }
}

次に、アクティビティAがあります。このアクティビティAでは、setterメソッドに値を挿入します。

public class A extends Activity
{
@Override
    protected void onCreate(Bundle savedInstanceState) {

sEngine.setSessionKey("Hello world")
}
}

アクティビティBもあります。このアクティビティBでは、getterメソッドを呼び出します。

public class B extends Activity
{
    @Override
        protected void onCreate(Bundle savedInstanceState) {

            String sessionKey = sEngine.getSessionKey();
    }
}

たとえば、プログラムを長時間アイドル状態にした場合や、Advanced Task Killerを使用した場合など、Androidがメモリを解放するためにすべてのデータをワイプすることがあります。問題は、これらが発生した場合、アクティビティAで値を設定したにもかかわらず、getterメソッドを呼び出すとアクティビティBでnullになることです。setterメソッドを介して保存された値を維持する方法はありますか(使用する以外) SharedPreference)だから、Androidはメモリ/データをワイプしますが、値はまだそこにありますか?

4

3 に答える 3

5

(SharedPreferenceを使用する以外に)setterメソッドを介して保存された値を維持する方法はありますか?Androidがメモリ/データをワイプしても値はそのまま残りますか?

SharedPreferences要件の完璧な候補であるにもかかわらず、なぜ使用したくないのかわからない。これと同じくらい単純なものがそれを保存できるとき:

SharedPreferences sharedPrefs = getApplicationContext().getSharedPreferences(SOME_KEY, Context.MODE_PRIVATE);
Editor editor = sharedPrefs.edit();
editor.putString("session_key", sessionKey );

これにより、セッションキーが常に保存されたままになり、簡単に取得できるようになります。ユーザーがアプリのデータをクリアしない限り、

対照的なあなたの唯一の選択肢は、セッションキーSharedPreferences保存することです。これは、私の意見では、実行するタスクを考慮すると、絶対に不要です。Database

また、セッションキーテキストファイルに書き込んでから、それを読み取ってデータを取得することも検討できます。

の両方の選択肢SharedPreferencesは、あなたがそれを必要とする目的には本当に不向きです。そして、私はあなたに本当に使用を再考することを強く勧めますSharedPreferences

于 2013-02-25T04:42:08.803 に答える
0

変化する

sEngine.sessionKey = sessionKey;

あなたのコードで

this.sessionKey = sessionKey;

または単に

sessionKey = sessionKey;

使用sEngine.すると、クラスが静的であると信じられます。

またはsEngine.、コード内のあらゆる場所でこれを使用する場合は、このクラスをとして宣言する必要がありstaticます。その場合は、クラス宣言を静的にする必要があります。

public static class sEngine {
于 2013-02-25T04:47:41.510 に答える
0

これを試して、Aアクティビティで非アクティビティクラスを宣言してください。次に、セッション値を設定します。

sEngine mengine = new sEngine();
mengine.setSessionKey("Hello world");

また、Bアクティビティでセッション値を取得します。

sEngine mengine = new sEngine();
String str = mengine.getSessionKey();
于 2013-02-25T04:33:26.390 に答える