2012-08-07 8 views
7

私のアプリは組み込みのBluetoothデバイスからメッセージを受け取るように設計されています。データを毎秒送信するセンサーを使って作業していたのですが、活動にインテントをブロードキャストすることはそれほど大したことではありませんでした。ブルートゥースデバイスがそのバッファをフラッシュしたときだけ目に見える減速があった。 これは、リフレッシュレートの高いセンサー(ECG、2msごとなど)に対処する必要があるため、インテントの数がリアルタイムでは表示されないためです。多くのインテントを持つAndroid契約

putIntegerArrayListExtra()とデータを2秒ごとに送信しようとしましたが、現在はA.N.Rとなります。

誰かが私に多くの意図を扱うようアドバイスできますか? (私のサービスの記憶も大きくなると思われます)。

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

編集:

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

答えて

0

また意図にサービスからデータを渡すためにバインディングを使用することができる: http://developer.android.com/guide/components/bound-services.html

+0

結合は、クロスプロセス間通信のための方法です。 –

+0

と彼の問題を解決することができます – ligi

+0

仕事のspeadについてはどうですか?それは意図よりも速く動作しますか? –

0

あなたの場合、私はインテントを使用しないことをアドバイスします。アクティビティや共有メモリや同期内でスレッドを使用しようとします。

関連する問題