2016-07-22 4 views
1

私はバックグラウンドで常時稼動し、I/Oを介して非同期割り込みを取得するシステムサービスを持っています。私は、他のアプリに割り込みが発生したときとその割り込みの性質を知らせることができるようにしたい。私はこの情報をの数多くの異なった、そして未知ののアプリで利用できるようにしたいと考えています。システムサービスから他のアプリケーションへの非同期通信

私は拘束力について、また放送についてはintents(私は確かにこれらの2つの方法以上のものがあると確信しています)を読んできました。 このシナリオでは、この情報を送信して一般に利用できるようにするには、どのような通信方法が最適でしょうか?

+0

通信の予想頻度はどのくらいですか?割り込みとIPCの何らかの形式の間に1対1の対応がない限り、割り込みを意味するわけではありません。 – CommonsWare

+0

実際には1:1の対応になります!彼らはたぶん15-20 /秒の最大で到着し、長時間の非活動を持っているでしょう –

+1

"長時間の非活動"はあなたのIPCを待っているだけではいけないということです。したがって、メッセージを配信するだけでなく、受信者がプロセスを実行していることを確認する必要があります。最も簡単な解決策は、放送「意図」であろう。アプリとのより豊富なやりとりが必要な場合(たとえば、割り込みに関する前後の通信がある場合など)は、特にあなたが考えている最大のクリップでは、うんざりします。私は、システムサービスからのブロードキャストの送信は簡単だと思いますが、それは確かではありません。 – CommonsWare

答えて

1

「長時間の非アクティブ」とは、IPCを待っているだけでは、「異なるアプリや未知のアプリ」が実行されてはならないということです。したがって、メッセージを配信するだけでなく、受信者がプロセスの一部として実行されていることを確認する必要があります。

最も簡単な解決策はブロードキャストIntentであると推測します。これはされます:あなたの部分に追加の作業をせずに、必要に応じてそのプロセスが起動できるように

  • 、放送を受信する受信者がマニフェストに登録を許可し

  • は単純化された「火を忘れてしまう」を持っていますあなたの側からのアプローチ

私はシステムサービスを実装していません。私は、1人から放送を送るのは難しいとは思わない。考慮すべき

他のもの:

  • 可能な場合は、バッチ処理システムを把握。あなたのトップレート15-20 /秒は、センサーの読み値とほとんど同じくらい悪くはありませんが、まだまだ頻繁です。

  • これにはどのようなセキュリティが必要か(たとえば、カスタム許可)を熟考してください。

関連する問題