アクティビティのライフサイクルがどのように機能するかを理解していることを前提としています。つまり、ここに当てはまらないことを避けようとしているわけではありません (単にs などのonCreate
ときに複数回呼び出される可能性があると考えています)。onRestart
技術的には、まったく問題ありません。
ただし、アクティビティをまったく作成すべきではないのに、アクティビティ (" A ") を再度呼び出す必要がある理由について、もっと心配する必要があります。
アクティビティAが既に "呼び出されている" (?) かどうかを確認している場合、これは、前のアクティビティ (" B ") がアプリのロジック フローに誤りがあり、代わりにBが実際には、そのアクティビティAを開始する必要があります。つまり、アクティビティを呼び出す必要があるかどうかを判断する必要がある場合は、開始する前に確認してください。
アクティビティを再開する場合 (例: ホームに移動してから戻る) には当てはまらないと思いますが、元の場所から再開する必要があります (私が言えることはB )。Aに戻ることはありません。そして、あなたは多くの詳細を与えなかったので、これはevilmage93が言ったようなある種のスプラッシュスクリーンだと思います.
それが実際にある種のスプラッシュ スクリーンである場合は、ユーザーがアプリをタスク スタックから削除するためにずっと戻ってきたときはいつでもそれを表示することをお勧めします (彼のアドバイスに反して)。つまり、ユーザーがアプリを「玄関」から再起動するたびに。
これは最終的には設計上の決定ですが、アプリが初めてスタックに読み込まれる (「入力される」) ときはいつでもスプラッシュ スクリーンを表示することを好みます。スプラッシュ画面はfinish
、最初の実行時であっても、完了すると自動的に表示されます)。一貫性の問題です。ユーザーが同じタスクを実行するたびに、同じアプリが同じように動作する必要があります (「フロント ドア」からアプリを起動します)。
それでも、あなたがそのように尋ねたので、私はいくつかの一般的な側面をカバーしてあなたの質問に答えました.
// 編集:
最後に、これを見るonCreateWasCalledAlreadyBoolean
と、アクティビティのライフ サイクル メカニズムの一部を再発明しようとしている可能性があります。この場合、してはいけないこと: ユーザーはその動作を期待しているため、通常のアクティビティ ロジックを続行します。通常、アクティビティがシステムによって強制終了され、再起動されたという理由だけで、アクティビティの通常の読み込みを中断するようにアドバイスすることはありません。