2012-03-12 2 views
0

私が登録できるサービスを作りたいと思います。サービスは異なる「タイプ」のメッセージをブロードキャストし、各アプリケーションはそれ自身を登録して異なるタイプのメッセージを受信することができます。例えば異なるメッセージタイプをブロードキャストするサービス

は私がシステムにタグを一部のユーザーと放送のTwitterのメッセージを読み込みserviveを書きたいです。 その後、消費者は、タグ「foo」のメッセージのみを受信し、ツイートメッセージを受信するために登録することができる。 他の消費者は、タグ「バー」のメッセージのみを受信し、ツイートメッセージを受信するために登録することができる。

私はサービスを構築する方法を知っていると仮定します。私の最初のアイデアは、何かをブロードキャストし、それをアプリでフィルタリングすることです。しかし、私はこの解決策に満足していません。私は、私が欲しいものと同様に動作するいくつかのアンドロイドサービスがあることを知っていますが、私はどのようにこれを実装するためのWeb上の参照が見つかりませんでした。この質問は、およそ単一のプロセスであるように、私のために>よくない、と -

主な問題は、インターネット上のドキュメントのほとんどが私を呼び出すサービスであり、私を呼び出すサービスではないということです。

+0

:この質問へのより良いタイトルがあなたを与えるだろう"DuckDuckGo"のホームページに無料で再ロードしてください:) – elcuco

+0

[Intents and intent broadcasts](http://developer.android.com/guide/topics/intents/intents-filters.html)を見てください。 *(この場合はサービスから)*を送信する方法と、[BroadcastReceiver](http://developer.android.com/reference/android/content/BroadcastRecei)で受信する方法の両方ver.html)。これは非常に重要なアンドロイドのコンセプトです。あるいは、[ContentProviders](http://developer.android.com/guide/topics/providers/content-providers.html)をチェックしてください。彼らはここでも役に立つはずですが、私はまだ自分でこれらのことをあまりしていませんでしたので、塩の穀物でそれを取ってください。 :) –

+0

@alextscサービスへのメッセージを作成するように指示すると、サービスは意図を介して「私」に連絡しますか?それは私の選択肢の一つでした。私はそれを+1できるので、それを完全な答えにしてください。編集:まあ、私は事の意図は私にとっては遅すぎるです。私はより速いものが必要です。 – elcuco

答えて

0

Service.sendBroadcast(Intent)について話すと仮定すると、あなたは何でも放送することができますが、ある時点では実用的ではありません。 Twitterタグごとに新しいActionを定義することもできますが、それは複雑になります。

IntentFilter ifilter = new IntentFilter("com.your.package.ACTION_TWITTER_MSG"); 
    ifilter.addDataScheme("twitter"); 
    ifilter.addDataAuthority("com.your.package", null); 
    ifilter.addDataPath("/foo", PatternMatcher.PATTERN_PREFIX); 

を、あなたはそのようにそれらを送信します: あなたがここにテントのデータ部分を使用することができ、コードを受信すると、そのようにブロードキャストをフィルタリングすることができところで

Intent intent = new Intent("com.your.package.ACTION_TWITTER_MSG"); 
    intent.setData(Uri.parse("twitter://com.your.package/foo")); 
    context.sendBroadcast(intent); 
関連する問題