Android-プレス時に最後に表示されたアクティビティを表示(ホームボタン - >アプリショートカット)
-
28-10-2019 - |
質問
私はこれまでのところ解決策を見つけていない永遠の質問をするようになりました。私はインターネットで同じ問題を検索しましたが、この問題の最終的な解決策を見つけました。
2つのアクティビティを開いて「ホームボタン」を引いてから、アプリケーションのショートカットを押すと、最初のアクティビティ(ランチャーアクティビティ)が表示され、表示されたアクティビティに戻るには、戻るボタンを押します。
この問題の解決策は何ですか?
アプリケーションのショートカットを押したいのですが(ホームボタンを押してアプリケーションを残した後)、最後のアクティビティが表示されたことを示しています。代わりに、最初のアクティビティ(アクティビティランチャー)が表示されます。
前もって感謝します。
解決
それが予想される動作です。ランチャーはフィルターでアクティビティを起動します android.intent.action.MAIN
.
ただし、回避する方法があります。非常に簡単なのは、ブールフラグを持つことです mRunning
あなたが設定すること true
起動時。もしも true
, 、次に onStart()
方法あなたはあなたの2番目を起動する意図を開始します Activity
; falseの場合は、続けてください setContentView()
.
あなたが戻るべきいくつかの活動がある場合、実行可能なアプローチは現在のアクティビティをで保存することです SharedPreferences
同じ方法で起動します。
あるいは、主なアクティビティは、使用された最後のアクティビティを開始することの唯一の仕事であるエントリアクティビティにすぎない場合があります。
編集: :この重複した質問を見つけました: Androidアプリを再起動したときに最後のオープンアクティビティに戻す方法は? それは私のものよりもはるかに優れたANSEWRを持っています。
他のヒント
ホームボタンを押すと、アプリケーションが背景で実行されています。 finish()
帰りたい場合は、ホームボタンを押すときのアクティビティ。
主なアクティビティが別のアクティビティによって起動されるか、アプリケーションアイコンによって起動されるかどうかに応じて、はるかにシンプルなソリューションを使用できます。メインアクティビティがアプリケーションアイコンによってのみ起動されている場合、使用できます ISTASKROOT() メインアクティビティがアプリケーションの新たなスタートとして起動されているかどうか、またはユーザーが返却し、主なアクティビティが代わりに表示したい他のアクティビティの上に配置されているかどうかを確認します。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (! isTaskRoot()) {
finish();
} else {
...
}
}
別のアクティビティを開きたいときに、StartActivityForresultの交換をStartActivityに使用できます。