0

複数のアクティビティからのGPSを使用するAndroidアプリに取り組んでいます。あるアクティビティから別のアクティビティに移動するたびにGPSを開始/停止(イベントを受信)することなく、すべてのアクティビティからGPSにアクセスするための良い方法を探していました。このリンクでは、サービスを使用し、OnStart / OnStopでバインド/バインド解除することをお勧めします。これらは重複しているため、

私はそのアイデアが本当に好きですが、1つの問題が残っています。アプリがアクティブでなくなったとき(つまり、ホームボタンが押されたとき)にGPSを停止したいのですが。この場合、OnPauseのみが呼び出されます。

何か案は?

ありがとう。

4

2 に答える 2

2

私はこのアプローチを使用しました。onStop() でバインドを解除すると正常に動作します。このメソッドは、アプリケーションが表示されなくなったときに呼び出されます。ホームキーを押すと、アプリケーションが非表示になります。

select アクティビティから OSM アクティビティ、Google マップ アクティビティに移動し、ホーム ボタンを押したときにログを記録します。(OSM と Google はどちらも GPS ロケーション リスナーでサービスを使用します) (OSM アクティビティを一時停止して設定を変更したため、一時停止して再開しました)

04-15 17:41:47.903: D/ACTIVITY(376): Select Mode Activity onPause
04-15 17:41:47.953: D/ACTIVITY(376): OSM Activity onCreate
04-15 17:41:48.043: D/ACTIVITY(376): OSM Activity onStart
04-15 17:41:48.063: D/ACTIVITY(376): OSM Activity onResume
04-15 17:41:49.394: D/ACTIVITY(376): Select Mode Activity onStop
04-15 17:42:04.213: D/ACTIVITY(376): OSM Activity onPause
04-15 17:42:04.763: D/ACTIVITY(376): OSM Activity onStop
04-15 17:43:00.483: D/ACTIVITY(376): OSM Activity onStart
04-15 17:43:00.533: D/ACTIVITY(376): OSM Activity onResume
04-15 17:43:20.683: D/ACTIVITY(376): OSM Activity onPause
04-15 17:43:20.723: D/ACTIVITY(376): Google Activity onCreate
04-15 17:43:20.853: D/ACTIVITY(376): Google Activity onStart
04-15 17:43:20.873: D/ACTIVITY(376): Google Activity onResume
04-15 17:43:21.307: D/ACTIVITY(376): OSM Activity onStop
04-15 17:43:40.833: D/ACTIVITY(376): Google Activity onPause
04-15 17:43:41.403: D/ACTIVITY(376): Google Activity onStop
于 2012-04-15T16:52:14.923 に答える
0

ホームボタンを押すと、アクティビティライフサイクルメソッドの一部として他のアクティビティが前面に出てきます。onUserLeaveHint メソッドと呼ばれるメソッドもあります。

onUserLeaveHint() は、アクティビティの他のライフサイクル メソッドと同様に保護されたメソッドであり、onUserLeaveHint を処理している場合、これは次のケースを処理します。

ユーザーがホームキーを押したとき

ユーザーがキーを押したとき

ユーザーがアナンシエーター バーにヒットしたとき

基本的に、ユーザーがあなたのアクティビティを離れようとしていることを示唆しています。つまり、 onUserLeaveHint() を処理している場合、コードで onBackPressed() を処理する必要はありません。

于 2012-04-15T16:45:19.307 に答える