は、あなたの利点に、アクティビティのライフサイクルを使用しているしてください誰かがこれを読んで理解、可能な最も簡単な解決することができます願っています。何らかの理由で画面が非表示になると、そのメソッドが呼び出されます。もう一度表示されると、onResume
が呼び出されます。ただし、最初に新しいアクティビティが表示されても、onResume
が呼び出されます。別の問題は、アクティビティ間で遷移するときにが呼び出されることです。
最後のアクティビティのとonResume
が連続して呼び出されたときに、最終的にアプリを「再起動」する必要があります。このクラスを試して、すべてのアクティビティでアクティビティの代わりにこのアクティビティを延長します。
public abstract class BaseActivity extends Activity {
private static BaseActivity lastPausedActivity = null;
@Override
protected void onPause() {
super.onPause();
lastPausedActivity = this;
}
@Override
protected void onResume() {
super.onResume();
if(this == lastPausedActivity) {
lastPausedActivity = null;
Intent intent = new Intent(this, FirstActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
}
}
私はこのコードをテストしていないので、少し調整が必要かもしれませんが、ロジックは健全でなければなりません。
私はこのクラスを作成し、それを他のクラスのコードで使用していましたが、最初にアプリケーションが起動しましたが、もう一度別のページに移動しようとすると再び最初のページに戻り、アプリケーションがクラッシュするまで最初のページの第2ページの最初のページなどのループに入ります。 –
'getTaskId()'は不適切な選択でした。私はそれがアクティビティ間でユニークかもしれないと思ったが、そうではないかもしれない。 taskIdの代わりにActivityを試してみてください(これは一般的には悪い考えですが、私のロジックが正しいことを確認するだけです)。コードを更新します。 –
ああ私は逃したものを見ます。 'lastPausedActivity'は' if'チェックの後にリセットする必要があります。 –