@commonsware
あなたがこのコミュニティに与えてくれたすべての助けに感謝します.
とにかく、 locationpollerを使い始めてからいくつか質問がありました
別の投稿で述べたように、ポーリング サービスを開始すると、ときどき次のように表示されます。
03-07 15:42:03.260: W/MessageQueue(14699): Handler (android.location.LocationManager$ListenerTransport$1) {419425f8} sending message to a Handler on a dead thread
これはまだ懸念事項ですか?これが単に locationmanager が台無しにしているかどうかはわかりませんでした。おそらくタイムアウト ハンドラでした。
次は、この投稿を作成する上での私の主な関心事です。
目的地を認識するナビゲーションのようなアプリケーションの一部として画面がオフになっているときにユーザーを追跡する必要がありますが、しばらく地下に行った後、何らかの理由で目覚めません。
ネットワークなしでプレイすると、奇妙なテスト結果が得られます。今のところ、私はあなたが提案するようにサービスを開始します
Intent i=new Intent(this, LocationPoller.class);
i.putExtra(LocationPoller.EXTRA_INTENT, new Intent(this, LocationReceiver.class));
i.putExtra(LocationPoller.EXTRA_PROVIDER, LocationManager.NETWORK_PROVIDER);
機内モードをオンにしたテストがPollerThread#onPreExecute()
毎回呼び出され、最後まで到達せず、2分後、受信機onTimeout
Runnable
がトリガーされたときに最終的に通知されると、すべてが文書化されたとおりに機能するようです。
その後、機内モードを再びオフにすると、すべてが正常に戻ったように見え、最終的に受信機が再び追いつきます。
私の問題は、現実の世界でテストし、地下鉄に乗って家に帰り、アプリとサービスを実行したままにしておくと、地上で再接続すると、ログにサービスが継続している痕跡が見つからないようであり、受信機、別のウェイクロックを使用して画面をオンに戻したり、目的地に近づいたときに通知を送信したりしますが、アプリを再度開くまでトリガーされません
簡単に言えば、これはライブラリの問題ですか?locationmanager の仕組みに問題がありますか? 機内モードを使用するだけでなく、これをテストするためのより良い方法について何かアイデアはありますか?
地上、自転車、運転など、すべてがうまく機能しているように見えますが、地下鉄を導入してすべての接続が失われると、たわごとが機能しなくなり、サービスがなぜサービスを提供するのかを理解するためのロケーションマネージャーの細かい点について十分に知りません止まるようです
免責事項このアプリは地下鉄の人向けではありませんが、ユーザーがどこにもいないときにネットワーク接続が失われたかどうかはわかりません (テストする方法はありません)。追跡も失われないことを願っています (設定に応じて、ネットワーク プロバイダーまたは GPS のみを使用することを選択できます)。