7

私のアプリは、組み込みの Bluetooth デバイスからメッセージを取得するように設計されています。毎秒以上データを送信するセンサーを扱っていたときは、意図をアクティビティにブロードキャストすることはそれほど大したことではありませんでした。目に見える速度低下は、Bluetooth デバイスがバッファをフラッシュしたときだけでした。ここで、高リフレッシュ レート センサー (2 ミリ秒ごとの ECG など) を処理する必要があるため、インテントの数によって視覚化がリアルタイムではないため (表示される測定値よりも多くの測定値が受信されるため)、もう少し包丁である必要があります。

2 秒ごとにデータを送信しようとしましputIntegerArrayListExtra()たが、今はANRを取得しています。

誰かが私に多くの意図を扱うようにアドバイスできますか? (私のサービスメモリもかなり大きくなっているようです)。

インテントをバイパスするには、サービスからアクティビティにオブジェクトを送信する必要があります。今のところこれは不可能であり、その理由はIntent.

編集:

私はバインディングを過小評価していました。実際、これによりアクティビティはサービスから、DeviceDriverコールバックを実行するリスナーを登録する " " のインスタンスを取得できます。アクティビティでドライバーのインスタンスを取得できるので、それをリスナーとして登録し、サービスとアクティビティの間のすべてのインテントを削減できます (少なくともデータ交換の場合)。

4

2 に答える 2

0

あなたの場合、インテントを使用しないことをお勧めします。アクティビティ内のスレッドまたは共有メモリと同期を使用してみてください。

于 2012-08-07T11:32:13.540 に答える
0

バインディングを使用して、サービスからインテントにデータを渡すこともできます: http://developer.android.com/guide/components/bound-services.html

于 2012-08-07T11:32:38.703 に答える