APIとGPSを使用している小規模な研究プロジェクト用のアプリケーションを開発しています。ActivityRecognition
APIとGPSを使用しています。私が達成しようとしているのは、両方のAPIをバックグラウンドプロセスとして実行し、現在のデータを定期的にログファイルに記録することです。このログファイルは、データが収集された後で手動で分析することができます。Androidバックグラウンドサービスのベストプラクティス
私のトラブルはこれを実行する最善の方法を理解することです。私は元ActivityRecognition sample appから開発しました。私のプロセスは以下の通りです:
- MainActivityのボタンをタップすると、requestLocationUpdatedでロケーションリスナーを作成します。また、MainAcitivityにActivityRecogitionリスナーを作成します。
- ロケーション更新イベントがトリガーされると、ブロードキャストでデータを送信します。 (MainActivity中)クラス全体のスコープ変数に
- MainActivityが実行されている場合は、GUIを更新し、broadcastRecieverを経由して放送するために耳を傾け、店最終更新
- ActivityRecognitionが更新を取得すると、GPSデータとともに、ファイル内のデータを記録MainActivityのクラス全体のスコープ変数に格納されます。
これで明白な問題がロケーションサービスはMainActivityはonPauseにヒットした場合であっても、バックグラウンドで動作しますが、ActivityRecognitionもファイルロガーがそうであることをMainActivityを必要とするサービスとしてバックグラウンドで実行されていないことですランニング。
1つの目的で複数のバックグラウンドプロセスを処理するベストプラクティスは何ですか?これらの両方を処理するバックグラウンドサービスを作成するには?次に、これをapp onCreate/buttonタップで実行しますか? MainActivityにデータを送信し(ブロードキャストメッセージ経由で聞く場合)
を発生する放送をトリガーする意思利用するためのサービスを使用してください - あなたは場所にActivityRecognitionコードを移動するために言っていますサービス?両方のサービスを1つのサービスで実行すると、GUIを更新する必要がある場合に、ブロードキャスト経由でMainActivityに「イベント」が送信されますか?これはこれを達成するための最良の方法ですか? – kirgy
いいえ...私は複数のサービスを持つことができます... activityRecognitionのためのインテントサービスを使用することで、タスクを実行してimediateltを実行します..それを自分で終了しますか..あなたが行ったことのスニペットを投稿してください遠く..私はより明確な見解を得ることができます – Chijioke