2017-05-05 6 views
0

私のアプリ用のスプラッシュ画面を実装しました。スプラッシュ画面のアクティビティを起動アクティビティにしました。スプラッシュアクティビティはスタートアップ作業(データの読み込みなど)を行い、その後、「本物の」メインアクティビティを起動します。第三者のアプリケーションから起動したときのスプラッシュ画面の再表示

問題は次のとおりです。他のアプリを起動できるサードパーティのアプリを使用しています。私のアプリがすでに起動しているとしましょう(スプラッシュ画面を過ぎ、実際のメイン画面を表示しています)。次にホームボタンを押してアプリをバックグラウンドに配置します。私はその後、サードパーティーのアプリに私のアプリを起動させる何かをします。私が望むのは、私のアプリを単純に復元することです(アプリのアイコンを携帯電話の通常のランチャーからタップした場合と同じです)。代わりに、スプラッシュ画面をもう一度起動し、私の初期化コードが再び実行されますが、これは嫌です。

これは私のアプリを起動しているサードパーティ製のアプリケーションなので、私は自分のアプリの起動方法を変更する能力がありません。私は、パッケージマネージャに問い合わせを出して起動の意図を得て、それを開始することを前提としています。だから、私は自分のアプリ自体でこれを修正する方法を見つける必要があります。

"実際の"メインアクティビティが既に実行されている場合、スプラッシュ画面のonCreateメソッドから見つけ出す方法はありますか?その場合は、初期化コードをスキップして、既存のメインアクティビティをフォアグラウンドにしますか?

答えて

0

Applicationクラスに静的なブール値を保持します。

初期化が完了したら、trueに設定します。
スプラッシュ画面が起動したら、ブール値をチェックします。真の場合は、ロジックを実行せずにメインアクティビティにまっすぐ進み、スプラッシュアクティビティを即座に終了します。
falseの場合は、コールドスタートとみなし、初期化コードを実行する必要があります。

Androidアプリ内からアクティビティスタックを見る方法がないため、メインアクティビティが既に実行中であるかどうかを確認することはできません。

アプリが動作しているかどうかを第三者のアプリが確認し、それに応じて別のアクティビティを起動する方法もありません。

関連する問題