私のアプリには、2 番目のアクティビティを起動し、スピナーを開始し (関連する場合)、いくつかの http 接続作業を行う単純なボタンがあります。この 2 番目のアクティビティは、Bluetooth 接続を実行してリッスンするサービスによって起動することもできます。
この問題は私のマイルストーン (2.1-update1) の電話では発生していませんが、2.3 を実行している同僚の電話では発生していると思います。ボタンを押して 2 番目のアクティビティを起動すると (サービス部分は完全に無視されます)、アクティビティが複数回起動されます。2 番目の画面を押すと、最初のアクティビティに戻るのではなく、2 番目の画面の別のインスタンスに着陸します。 .
このサービス部分について言及する理由は 2 つあります。1 つ目は、サービスを実装したときにこの問題が発生し始めたことです。2 つ目は、サービス側でクライアントが正しく管理されていないという別の問題があったためです。 2 番目のアクティビティがボタンではなくサービスを介して起動された場合、まさにこの動作が見られます。メッセージはすべてのクライアントに送信されていたため (1 つだけである必要があります)、サービスがこの 2 番目のアクティビティの複数の起動を生成するのを見ていました。しかし、再びボタンを押すことによって、修正されたこのサービスの問題は責任を負うべきではありません.
今、私はこれがもう起こらないようにするために2つのことを整えました. 2 番目のアクティビティに singleTask (android:launchMode="singleTask") としてフラグを立て、2 番目のアクティビティを startActivityForResult として起動していたことに気付きましたが、戻ってきたときにそれを設定または使用していませんでした。これはエラーなどの原因ではありませんでしたが、単純な startActivity に変更しました。
他の電話に物理的にアクセスできないため、他の場所にある別のオフィスにあるため、logcat などに接続できません。
もう一方の電話にはもう問題は見られませんが、実際に問題を解決するのではなく、問題を隠してしまったのではないかと心配しており、誰か洞察を提供できるかどうか疑問に思っていました。