1

私の Android アプリは、いくつかのアクティビティで構成されています: M(メインまたはルート) A、、、... 以下は、考えられるアクティビティ ナビゲーション グラフですBC

ここに画像の説明を入力

ルート アクティビティMを初期化するときに、一部のパラメータ (画面サイズなど) を特別なクラスの静的変数としてキャッシュMyUtilsして、後で他のアクティビティで使用できるようにします。

Kaboom は、アクティビティ中にホーム ボタンを押してC、多数のアプリケーションを起動すると発生します。アプリケーションに戻ると、すべてが破棄されているように見えます。C.onCreateメソッドが呼び出されていますが、キャッシュされたパラメーターがリセットされているようです。

長い一時停止の後、Android がアプリケーションを荒廃させた後Mではなく、から始めたいと思います。Cどうすればこれを達成できますか?

私は次のようなことを考えました:

// to be put into all my activities but M:
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (MyUtils.GetScreenWidth() == -1)
    {
        // seems like Android killed my app
        finish();
        return;
    }
    // Normal initialization.
    // Use MyUtils.GetScreenWidth() to align my ui elements.
}

...しかし、それが最善の方法であるかどうかはわかりません。何を提案しますか?

4

3 に答える 3

2

正直なところ、私はあなたがしていることと同じか、似たようなことをします。おそらくより良いアイデアはMyUtils.initialize()、アプリケーション コンテキスト パラメーターを取り込んで、onCreate()MyUtils を使用する各アクティビティで呼び出される静的メソッドを用意することです。

それか、値をそれぞれ a に格納しますSharedPreference

于 2012-12-07T18:32:06.583 に答える
2

ユーザーがフロントドア アクティビティと対話する必要がある場合 (たとえば、ユーザーを再度認証する場合) を除いて、おそらくこの方法は望ましくありません。

そのフロント ドア アクティビティを介してそれらを強制的に戻したい場合は、他のアクティビティのいずれかを使用して新しいプロセスで開始したことを検出したときに、インテントを使用してそれを起動できます。Intent フラグのドキュメントを読んで、この用途に適用されるフラグを選択することをお勧めします。

于 2012-12-07T19:10:02.240 に答える
0

これはあまり賢明な方法ではありませんが、これらの情報をデータベースや単にファイルなどの別の場所に保存し、必要に応じて取得することができます。

于 2012-12-07T18:44:06.477 に答える