私のプログラムは SDK 4.0.4 で失敗し始めましたが、SDK 2.3.3 では動作しますが、これは意味がありません。
基本的な流れは次のとおりです。
- 最初のアクティビティがリモート サービスを開始し、ボタンのクリックで 2 番目のアクティビティを呼び出します
- 2 番目のアクティビティは、サービスにバインドしてから終了しますが、logcat には、それが発生した理由を説明するものは何もありません。
これは、サービスが開始された後の私が見るものです:
04-15 09:13:46.614: I/ErrandAssistantService(7015): Setting a new request for location updates
04-15 09:13:46.661: I/ErrandAssistantService(7015): saveProximityAlert - used GPS
04-15 09:13:46.669: I/ErrandAssistantService(7015): saveProximityAlert - used network
04-15 09:13:46.677: I/ErrandAssistantService(7015): saveProximityAlert - used GPS
04-15 09:13:46.681: I/ErrandAssistantService(7015): saveProximityAlert - used network
これは 2 番目のアクティビティで発生します。
04-15 09:13:47.044: I/MapViewActivity(7039): OnResume: mapView loaded = true
04-15 09:13:47.083: I/MapActivity(7039): Handling network change notification:CONNECTED
04-15 09:13:47.196: I/ErrandMapActivity(7039): onServiceConnected
04-15 09:13:47.196: I/ErrandMapActivity(7039): registering callback
04-15 09:13:47.200: I/ErrandAssistantService(7015): registerCallback
04-15 09:13:47.200: I/ErrandMapActivity(7039): onResume - binding succeeded
次に、2 番目のアクティビティ (既に終了している) に情報を送信しようとしているサービスからの次のメッセージが表示されます。
04-15 09:13:49.142: I/ErrandAssistantService(7015): Sent location changed callback
04-15 09:13:49.142: I/ErrandAssistantService(7015): Sent route changed
04-15 09:13:49.142: I/ErrandAssistantService(7015): geoPoint set
そのため、アクティビティはサービスにバインドされ、後でサービスはデータをアクティビティに送り返しますが、そのアクティビティは既に終了しています。
これを 10 より大きく設定するとクラッシュしますが、それ以外の場合は正常に動作します。
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="10" />
では、より高いバージョンの SDK を使用すると例外なくアプリケーションがクラッシュし、それが実行されない問題をトラブルシューティングするにはどうすればよいでしょうonStop
かonDestroy
?
2 番目のアクティビティでは、呼び出されなかったので、異常終了するように見えます。
@Override
public void onStop() {
Log.i(TAG, "onStop");
super.onStop();
}
SDK のバージョンが 17 に設定されていて、電話が SDK 2.3.3 の場合、クラッシュしませんが、SDK のバージョンを 10 に設定し、電話のバージョンが 10 に設定されている場合と同じように見えます。 4.0.4。
サービスにバインドしない 2 番目のアクティビティも試しましたが、同じ動作が観察されたため、リモート サービスとは関係がないようです。
また、アクティビティと同じプロセスでサービスを実行して、デバッグ情報を取得できるかどうかを確認しましたが、追加情報も得られませんでした。
SDK のバージョンをそれほど低く設定しなければならないのは好きではありませんが、新しい更新プログラムをリリースする必要があり、これが機能しているように見える唯一の解決策でした。