私は問題があります。 Androidアプリケーションを初めて起動すると、メインアクティビティでonCreate
とonResume
の両方が呼び出されます。 onCreate。
私に何ができる?
SDKドキュメントによると、表示されているのは意図された動作です。アクティビティ- アクティビティライフサイクル のドキュメントのフローチャートを参照してください。
プログラムでこれを克服するには、インスタンスメンバーにonResumeが以前に呼び出されたことがあるかどうかを追跡させます-初めて呼び出されたときに、変数を設定して、たとえば.
private boolean resumeHasRun = false;
@Override
protected void onResume() {
super.onResume();
if (!resumeHasRun) {
resumeHasRun = true;
return;
}
// Normal case behavior follows
}
正解は、Activity
のonRestart()
メソッドを使用することです。これはおそらくあなたが探していたものです。
これはアクティビティのライフサイクルのしくみであるため、何もできません。
ライフサイクルを示す図については、 http://developer.Android.com/guide/topics/fundamentals/activities.html#Lifecycle を参照してください。
APIで確認できるように、アクティビティを表示する前に、アクティビティライフサイクルは常にonResumeを呼び出します。 http://developer.Android.com/reference/Android/app/Activity.html#ActivityLifecycle
私はあなたが最初のアクセスのためにグローバルなブール値を作成し、それをfalseに設定できると思います。次に、onResumeをオーバーライドして変数を確認します。 falseの場合はtrueに設定して返し、trueの場合はsuper.onResumeを呼び出します。
動作するはずですが、より簡単に処理できるかどうかはわかりません。また、ここでSDKにアクセスしてテストすることもできません。