web-dev-qa-db-ja.com

Android onCreate onResume

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

私に何ができる?

15
Alessio

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

プログラムでこれを克服するには、インスタンスメンバーにonResumeが以前に呼び出されたことがあるかどうかを追跡させます-初めて呼び出されたときに、変数を設定して、たとえば.

private boolean resumeHasRun = false;

@Override
protected void onResume() {
    super.onResume();
    if (!resumeHasRun) {
        resumeHasRun = true;
        return;
    }
    // Normal case behavior follows
}
42
Mark Roberts

正解は、ActivityonRestart()メソッドを使用することです。これはおそらくあなたが探していたものです。

12
Fenix Voltres

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

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

1
Heiko Rupp

APIで確認できるように、アクティビティを表示する前に、アクティビティライフサイクルは常にonResumeを呼び出します。 http://developer.Android.com/reference/Android/app/Activity.html#ActivityLifecycle

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

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

1
MatF