2012-12-12 3 views
0

"일본 전통 시간"(JTT)을 보여주는 응용 프로그램을 쓰고 있습니다. 모두 동일한 데이터 (현재 JTT)를 사용하는 여러 구성 요소 (알림, 위젯, 응용 프로그램 자체, 경보)가 있습니다.ContentProvider 또는 서비스?

현재 버전에서는 모든 계산을 수행하는 하나의 서비스를 사용하며 처리기를 사용하여 모든 사람에게 "똑딱 거리는 소리"에 대해 알리고 ACTION_TIME_TICK을 흉내냅니다.

그러나 알람이 있으면 JTT로 "평상시"를 번역 할 수있는 방법이 필요합니다. 계산은 꽤 CPU가 많습니다 (모두 일출과 일몰을 기반으로 함). 따라서 모든 작업을 단일 장소에서 수행 한 다음 캐싱 (일출과 일몰 시간을 아는 것은 무겁지 않음) 계산을 선호합니다.

    • 서비스 에 모든 것을 유지하고 원하는 데이터를 요청하는 바인딩을 사용 :

      그래서 지금은 그렇게 할 수있는 몇 가지 방법이있다. 실제로 이미 한 경우 다 내가 비동기 응답

  • 이동 콘텐츠 공급자를 처리해야하기 때문에 조금 성가신 것 같다 것
    • 대신 방송의
    • 컨텐츠 관찰자를 사용하거나 제공
    • 에서 방송을 전송
  • 차례로 필요를 방송한다 서비스에 대한 데이터를 계산하는 두 가지 에게
    • 사용 컨텐츠 제공 업체를 결합 에드

더 좋을 것이다? 다른 뭔가?

답변

0

나는 "그냥 서비스"를 고수하고있다. 나는 등록한 후에도 서비스를 통해 최신 데이터를 요청해야만하는 일반적인 방송 (브로드 캐스트)에 대한 문제를 실제로 다룬 Sticky Broadcasts를 발견했다. 실제 서비스 연결이 필요한 경우가 훨씬 적습니다.

0

콘텐츠 공급자는 구조화 된 데이터 용이므로 실제로 사용 사례에 맞지 않습니다. '비동기 응답'이 무슨 뜻인지 확실하지 않은가요? 원격 서비스를 호출하는 것은 일반적으로 로컬 함수 호출과 같으며 완료되면 값을 반환하고 반환합니다. 여러 구성 요소에 통보해야하는 경우 브로드 캐스트가 필요합니다. 모든 구성 요소가 동일한 프로세스 (Android 지원 라이브러리 소스 확인)에 포함되어 있으면 LocalBroadcast를 사용하여 탐색하거나 시스템 전체 (일반)를 전송해야하는 경우 다른 앱이 가져올 수없는 권한을 설정하십시오.

+0

지금은 'Messenger'를 서비스와 통신하는 데 사용하고 있으므로 바운드 서비스에서 데이터를 요청하려면 메시지를 작성한 다음 보내면 내 'Handler'에서 응답을받습니다. – aragaer

+0

하지만 동기식 커뮤니케이션에 대해 살펴볼 것입니다. – aragaer

+0

아, 알겠습니다. 나는 AIDL 기반 서비스에 대해 생각하고 있었는데, 간단히 로컬 스텁에서 메소드를 호출하여 동기 호출을 얻는다. –