0

私は最初の Android アプリに取り組んでおり、アクティビティ レベルではなく、グローバルにアクティブ化/非アクティブ化/開始/停止を処理する方法を考えています。

この素晴らしい記事は、アクティビティの状態遷移を示しています: http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

アプリケーションの状態に似たものはありますか?

たとえば、iOS および Windows Phone アプリでは、アクティビティ (ビュー、コントローラーなど) から分離された明確なアプリの状態があります。

すべてのアクティビティの開始/停止ではなく、アプリのロード/終了ごとに1回だけ特定の操作を実行したいので、私は尋ねています

4

3 に答える 3

3

答えは、これを行うための直接的な方法は単にありません

アプリケーションクラスではなく、これらのイベントをキャッチできます

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

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

したがって、あなたが持つすべてのアクティビティでそれを処理する必要があります

以下の方法

  • onResume()
  • onStart()
  • onRestart()
  • onPause()
  • onDestroy()

すべてのアプリケーションを処理するには、すべてのアクティビティに実装する必要があります

提案

アプリケーションの状態を保存するために、 Application クラスにいくつかの変数を含めることができます

次のような変数を作成するとします

public static boolean isPaused;

状態の変化時にすべてのアクティビティから設定します

于 2013-09-20T20:50:37.707 に答える
2

あなたが求めている質問は、iOS と Windows には当てはまりますが、実際には Android には当てはまりません。

Application クラスはありますが、Android にはアプリケーションをオブジェクトとして捉えるという概念はありません。代わりに、アプリはアクティビティの緩いコレクションです。このような状況には多くの正当な理由があります。たとえば、アプリの素早い切り替えや、異なるアプリのアクティビティ間の簡単なやり取りをサポートします。

「アプリ」を調整して、1 つのアクティビティが既に実行されていることを実行しようとしないようにする最善の方法は、SharedPreferences を使用してアプリの状態を保存することです。それを行う他のほとんどすべての方法はあまり好まれません。システムがアプリ全体を強制終了しても、SharedPreferences は現在の状態を維持します。Application オブジェクトはそうしません。

また、Android は一時停止と再開に基づいています。1 つまたは複数のアクティビティが作成、一時停止、および再開されます。それらは破壊されるかもしれませんが、それは極端なケースです。これに対する当然の帰結は、アプリに終了ボタンを設けるべきではないということです。その必要はありません。あるアプリを時々見かけますが、彼らが実際にやろうとしているのは、バックグラウンドのサービスまたはプロセスをシャットダウンすることです。そのための最善の方法は、「スリープ」などのアフォーダンスを用意することです。

于 2013-09-20T23:10:35.400 に答える