2017-07-07 10 views
0

アプリをNissan Leaf Spyと似ているようにしようとしています。このアプリは、BluetoothインターフェースELMからのデータを受信する327私の目標は、のようなデータを収集することです:サービスを使用してすべてのアクティビティから値にアクセスする方法

  • スピード
  • 温度
  • パワー
  • バッテリ容量
  • そして、いくつかのより多くのデータを

GraphViewを使用してリアルタイムチャートに表示します。 1つのパラメータは、アクティビティの1つのチャートです。したがって、少なくとも私が表示する必要があるパラメータと同じ数のアクティビティがあります。私の推測では、共同Bluetooth経由で別のアレイ内のすべてのデータを収集し、保存するために、バックグラウンドで仕事をするために

Android Services 

を使用することです。もちろん、私が別のアクティビティを見るためにアクティビティを変更すると、動作するものは動作を停止し、それ以上のリアルタイムはありません。 質問は:常に何か「スーパークラス」が存在しているか、SQLを使用してこのデータを保存する必要がありますか?または、私はちょうどintent.putExtraString(key,value)getIntent().getStringExtra(key)を使うべきですか?私はあなたの助けに感謝します!

答えて

1

異なるパラメータに対して異なるアクティビティを使用することについては、1つのアクティビティのみを持つ必要があります。パラメータ用のアダプタを使用してグラフと異なるArrayListを作成し、その中の1つを使用して、Spinnerの選択したパラメータに従ってグラフを供給することができます。

これらのArrayListsにフィードするのは簡単です。 AsyncTaskを内部に持つ一般的なデータ収集用のサービスを実行して、アプリがアクティブで、バックグラウンドではないときに、選択したパラメータのフィードを有効に保つことができます。サービスは、単独で、これらのグラフを供給するのに十分な大きさのバッファーでデータを収集することができます。

AsyncTasksは、メインスレッドをブロックせずにUIコンポーネントを更新するのに便利です。


EDIT:あなたはデータやグラフを表示しようとしているところ、あなたは(あなたが活動に入るようAsyncTaskは、すぐに実行することができますあなたが活動を持っている場合(のはメイン以外の何らかの活動を考えてみましょう)、見てグラフのデフォルトパラメータを定義することができます)、またはドロップダウンから選択すると、アクティビティにいる間にリアルタイムデータが与えられます。

ライブフィードにAsyncTaskを使用している理由は、異なるUIビューを持つことができ、今後の問題なくシームレスに統合でき、サービスをアクティビティの機能にモジュール化して終了することです。バックグラウンドで実行されるサービスは、アプリの起動またはアクティビティの起動後に実行されるときに、主に一時ログファイルに提供するか、AsyncTask用のInputStreamソースになります。

+0

あなたは、その中に別のArrayListを持つ「メイン」アクティビティを1つだけ使用することができます。アクティビティを変更してもAsyncTaskはその仕事を行い、「メイン」アクティビティ? – Matt199

+0

私は自分の答えを更新しました。 –

+0

ありがとう!もし私があなたを何とか助けることができたら教えてください。 –

関連する問題