1

ホームキーに関連する問題があります。ホームキーを押すと、現在のアクティビティが非表示になりますが、実行可能ファイルを再度起動すると、最初の画面から開始されます。すべてのメソッド (onSaveInstanceState、onPause、onStop onResume) をオーバーライドしましたが、まだ問題があります。これを処理する正しい方法は何ですか?

ホームボタンを押すと、ウィジェットの状態をデータベースに保存し、実行可能ファイルを再度起動すると、データベースの状態を確認し、ユーザーがホームボタンを押したときに保存された新しいインテントを開始します。ユーザーが同じことをしてもう一度戻るボタンを押したときに問題に直面しているので、これは正しい方法ですか?アクティビティスタックで利用可能なインテントが既にあります。

4

2 に答える 2

5

この奇妙な振る舞いに1か月以上苦労しましたが、試行錯誤しながらようやく説明を見つけました。

この動作は、アプリケーションをEclipseから、コマンドラインから起動した場合、またはアプリケーションをインストールして、インストール直後に([完了]ボタンではなく)[開く]ボタンを押してアプリケーションを起動した場合に発生します。

これらのケースの1つで、アプリケーションを開始し、Activity1に移動してからActivity 2に移動し、HOMEボタンを押してからアプリケーションアイコンを押すと、Activity1の新しいインスタンスが開きます。私の言葉を信じないでください。戻るを押すだけで、HOMEを押したときに残したActivity2に移動することを確認できます。

上記のいずれかの方法でアプリケーションが起動された場合、ランチャーアクティビティはアクティビティスタックに配置されないようです。そのため、アプリケーションのスタック内の現在のアクティビティの上にランチャーアクティビティの新しいインスタンスが作成されます。これは私にはバグのように見えます。

したがって、回避策は、Eclipse、コマンドライン、または[開く]ボタンなどから初めてアプリケーションを起動したときに、必要な回数だけ[戻る]ボタンを押してアプリケーションを終了し、アプリケーションを再起動することです。それ以降、動作は期待どおりになります。

于 2011-01-24T13:25:17.693 に答える
4

あなたが説明したことから、おそらくAndroidManifest.xml でandroid:launchModeをオーバーライドしたか、Eclipse から「run as」でテストしている場合は、インストールして自動起動した後にアプリケーションを終了してみてください。次に、エミュレーターから再度開始し、ホーム ボタンの動作をテストします。これは、Android が Eclipse から起動したときにアクティビティを OS スタックに配置せず、ホーム ボタンの動作が通常どおりではないためだと思われます。これで問題が解決しない場合は、http://developer.android.com/guide/topics/fundamentals.html#lmodesを読んでみてください。

これが役立つことを願っています。

于 2009-10-24T23:11:38.767 に答える