0

ユーザーの場所を生成するサービスを利用しました。また、サービスから場所を取得してデータベースに送信するサービスインスタンスのスレッドも取得しました。スレッドは1分間スリープ状態になり、サービスからアドレスを再度要求してデータベースに送信します。

私の質問は、このスレッドの代わりにサービスを作成する必要があり、2番目のサービスは1分ごとに開始されますか?利点は、スレッドを気に入る必要がないときにサービスが実行されないことですが、欠点は、1分ごとに新しい接続を作成する必要があることです。

何が良いですか?誰がより効率的ですか?

4

2 に答える 2

2

私は通常、常に使用しないことが最善であるという考え方から来ていますThread.sleep();

とはいえ、アプローチできるオプションはいくつかあります。

。1分ごとに位置情報をリクエストしますが、GPSラジオは非稼働時間中もオンのままになるため、バッテリーに奇妙な影響を与える可能性があります。

。サービスのPendingIntentを作成し、AlarmManagerに1分後に再度呼び出すように依頼します。これにより、GPSが常にオンになっているわけではありませんが(uプログラムが正しい場合)、位置を再度修正する必要があります

。同じサービスで(破棄して再起動せずに)ScheduledExecutorServiceを使用して、1分ごとにスレッドを実行することもできます。(GPSのオンまたはオフはプログラミングによって異なります)

于 2013-01-11T16:17:30.747 に答える
0

データベースに挿入された場所の更新を挿入するために、スレッドまたは 2 番目のサービスが必要なのはなぜですか。requestLocationUpdates メソッドと onLocationChanged イベントで 1 分ごとに locationupdates を構成できない理由、レコードをテーブルに直接挿入できない理由。毎分 2 番目のサービスまたはスレッドを実行すると、バッテリーのパフォーマンスに影響を与える可能性があります。私は私のプロジェクトの1つで見ました。

于 2013-01-11T16:13:57.777 に答える