2012-03-12 5 views
0

등록 할 수있는 서비스를 만들고 싶습니다. 이 서비스는 서로 다른 "유형"의 메시지를 브로드 캐스팅하고 각 애플리케이션은 서로 다른 유형의 메시지를 수신하기 위해 자체 등록 할 수 있습니다. 예를 들어다른 메시지 유형을 브로드 캐스팅하는 서비스

는 :

나는 시스템 태그에 일부 사용자와 방송의 트위터 메시지를 읽는는 죽을를 쓰고 싶어요. 그러면 소비자는 "foo"태그의 메시지 만 수신하고 트윗 메시지를 수신하도록 등록 할 수 있습니다. 다른 소비자는 "bar"태그의 메시지 만 수신하도록 등록하고 트윗 메시지를 수신 할 수 있습니다.

서비스를 작성하는 방법을 알고 있다고 가정합니다. 내 첫 번째 아이디어는 무언가를 방영 한 다음 앱에서 필터링하는 것입니다. 그러나 나는이 해결책에 만족하지 않는다. 내가 원하는 것과 비슷한 몇 가지 안드로이드 서비스가 있다는 것을 알고 있지만이를 구현하는 방법에 대한 웹 참조가 없습니다. 이 질문에 대한 하나의 과정으로, 나를 위해> 좋은하지, 그리고 -

주된 문제는 인터넷에있는 대부분의 문서가 내게 전화하는 것이고 나를 부르는 서비스가 아니라는 것입니다.

+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); 

을하고 그렇게 보내 : 당신은 여기에 텐트의 데이터 부분을 사용할 수있는 코드를받는 것은 그런 방송을 필터링 할 수 BTW

Intent intent = new Intent("com.your.package.ACTION_TWITTER_MSG"); 
    intent.setData(Uri.parse("twitter://com.your.package/foo")); 
    context.sendBroadcast(intent); 
관련 문제