15

私は問題があります。Android アプリケーションを初めて起動すると、メイン アクティビティでonCreateと の両方onResumeが呼び出されます。しかし、私はonCreateだけと呼ばれたいです。

私に何ができる?

4

4 に答える 4

42

SDKドキュメントによると、表示されているのは意図された動作です。アクティビティ-アクティビティライフサイクルのドキュメントのフローチャートをご覧ください。

プログラム的には、インスタンスメンバーを保持して、onResumeが以前に呼び出されたかどうかを追跡することで、これを克服できます。最初に呼び出されたときに、変数を設定して、egを返します。

private boolean resumeHasRun = false;

@Override
protected void onResume() {
    super.onResume();
    if (!resumeHasRun) {
        resumeHasRun = true;
        return;
    }
    // Normal case behavior follows
}
于 2011-05-30T11:43:49.503 に答える
15

Activityの方法を使うのが正解ですonRestart()。これはおそらくあなたが探していたものです。

于 2012-03-12T12:05:08.873 に答える
1

これがアクティビティのライフサイクルのしくみであるため、何もできません。

ライフサイクルを示す図については、http://developer.android.com/guide/topics/fundamentals/activities.html#Lifecycleを参照してください。

于 2011-05-30T11:35:07.290 に答える
1

API でわかるように、Activity Lifecycle は、アクティビティを表示する前に常に onResume を呼び出します。 http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

最初のアクセス用にグローバル ブール値を作成し、それを false に設定できると思います。次に、onResume をオーバーライドして、変数を確認します。false の場合は true に設定し、true の場合は super.onResume を呼び出します。

動作するはずですが、より簡単に処理できるかどうかはわかりません。また、ここで SDK にアクセスしてテストすることもできません。

于 2011-05-30T11:35:16.530 に答える