問題記録-apkを初めてインストールした後、ホームページに起動し、ホームキーを押してデスクトップに戻り、アプリケーションアイコンをクリックして、問題を再起動します.
1143 ワード
質問:
初めてappをインストールして、開いて、正常にホームページの面にログインして、この時homeボタンをクリックして、デスクトップに戻って、更にアプリケーションiconをクリックして、私たちの考えを押していないですぐにホームページの面に戻ります.
理由: Intentを起動するたびにTaskが新しく作成されると、そのTaskは作成されたIntentを記録します.その後、Intentの作成と完全に一致する新しいものが必要である場合(起動クラス、action、categoryなどすべてが同じで、複数でなくても不可欠であると完全に一致する)、IntentはActivityの新規起動をトリガーするのではなく、既存の対応するTaskをフロントに移動するだけです.これは、デスクトップがアイコンを再度クリックすると、Appの実装を再起動するのではなく、バックグラウンドタスクをフロントに移動する理由です. 最初のインストールで起動したIntentは、デスクトップからクリックして起動したIntentとは起動クラスではないので(理由1を参照)、前のページに戻るのではなく、起動ページを再作成します.
ソリューション:
起動ページActivityのonCreate()メソッドに次のロジックを追加します.
通常、起動ページ(フラッシュページとも呼ばれる)は、最初の起動がタスクスタックのルートであれば、一般的に起動が完了するとfinishが落ち、ルートActivityがホームページ面になり、homeキーを押して再びデスクトップアイコンからクリックすると、起動ページはこのコードを通りますが、finishは現在のページを落とし、バックグラウンドはフロントに切り、問題は解決します.
初めてappをインストールして、開いて、正常にホームページの面にログインして、この時homeボタンをクリックして、デスクトップに戻って、更にアプリケーションiconをクリックして、私たちの考えを押していないですぐにホームページの面に戻ります.
理由:
ソリューション:
起動ページActivityのonCreate()メソッドに次のロジックを追加します.
// , activity
if (!this.isTaskRoot()) {
Intent intent = getIntent();
if (intent != null) {
String action = intent.getAction();
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) {
finish();
return;
}
}
}
通常、起動ページ(フラッシュページとも呼ばれる)は、最初の起動がタスクスタックのルートであれば、一般的に起動が完了するとfinishが落ち、ルートActivityがホームページ面になり、homeキーを押して再びデスクトップアイコンからクリックすると、起動ページはこのコードを通りますが、finishは現在のページを落とし、バックグラウンドはフロントに切り、問題は解決します.