Androidドキュメントによると:
http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html
「ユーザーがホームボタンを押してタスクを終了すると、現在のアクティビティが停止し、そのタスクがバックグラウンドになります。システムは、タスク内のすべてのアクティビティの状態を保持します。ユーザーが後でランチャーアイコンを選択してタスクを再開した場合それがタスクを開始すると、タスクはフォアグラウンドになり、スタックの一番上でアクティビティを再開します。」
私がこれを正しく理解している場合、これは次のことを意味します。
- メインアクティビティとしてのアクティビティA。
- 「startActivity」を介してAで開始されるアクティビティB-一般的なプレーンインテントインスタンス。
- 初めてアプリを開くと、Aが読み込まれます。
- Aのボタンをクリックすると、Bはオープンエンドです。
- ホームボタンを押します。
- もう一度アプリを開くと、Bが表示される予定です
...右?これは予想される正しい動作だと思います...
ただし、これはアプリに表示されません。
「ホームボタン」を押してからアプリを再開すると、ランチャーアイコンを押して、メインのアクティビティから開始します。一番上のアクティビティや最新のアクティビティではありません。
私はSamsungGalaxyTab Android 2.2.1でコーディングしています-Androidマニフェストで最も一般的なオプションがあります-さまざまなインテントエクストラを使用して10の異なるアクティビティを処理し、ディスパッチャークラスのアプローチを使用します-または各アクティビティの状態を保存します-かなり厳しいですね。
私はEclipseIDEをADTバージョン12で使用しています。そして私は非常に興味深いものを見つけました:
デバイスを接続した状態でEclipseIDEからアプリを実行すると、この動作は見られません。アプリはドキュメントに記載されているように動作します。実際、これは、apkをGooglePlayアプリリポジトリにデプロイした後でのみ見られました。それをダウンロードしてテストしました。
私の質問は、これが起こっている本当の理由を誰かが見つけたということです。ドキュメントは間違っていますか?または何かが足りない?これはAndroidのバグですか?
私が行った別の研究は次のとおりです。
Google PlayからダウンロードしたアプリをAPKとして試してみると、アプリを2回目に入力すると、最後のオープンエンドではなく「メイン」アクティビティが表示されます。家に押します。ホームを押した後、Androidのアプリケーション管理設定を入力し、アプリを見つけて[強制停止]をクリックします。これを行った後、アプリはドキュメントに記載されているように動作します。
誰か助けて!:)