2012-05-01 3 views
9

2 년이 지난 지금, 조각, 의도 서비스, 커서 로더가 있습니다. 접근 방식은 여전히 ​​최신입니까, 아니면 안드로이드 레스트 클라이언트를 디자인하는 데 더 좋고 성숙한 패턴이 있습니까? 특히 옵션 B (이미지를 게시 할 수있는 권한이 없습니다. 대신 이미지는 this post에서 찾을 수 있습니다) .Google 클라이언트 2010의 나머지 클라이언트 앱 디자인 방식이 아직 최신 상태입니까?

콘텐츠 제공 업체가 필수적이라는 사실을 알고 있습니다. 서비스 도우미와 서비스 구성 요소는 어떻습니까? 지금까지는 startService 메소드가 Context 또는 그 서브 클래스의 특성입니다. 이는 서비스 도우미가 활동이된다는 것을 의미합니다. 따라서 콘텐츠 제공 업체로부터 활동을 시작하는 것이 유익합니다. 또는 활동 시작 부분에서 시작해야합니다. 는 SyncService를 시작할 수 없습니다 불구하고 google io 2011 iosched app source code로 팠 분들을위한

  • , 당신은 서비스 도우미로 HomeActivity의 정적 클래스 SyncStatusUpdaterFragment을 고려할 것입니다,하지만 뒤쪽에서 호출을 들어 않습니다 UI의 SyncService 및 트리거 새로 고침. 그래서 그것은 Virgil Dobjanschi의 접근 방식의 차이로 볼 수 있을까요?

서비스, 의도 서비스, asyncTask 및 스레드가 제공됩니다. 제 생각에는 의도 서비스가 원격 서버의 메가 팩 데이터 동기화에 적합하다는 것입니다. 그래서 그들은 그것을 iosched에서 사용합니다. 그러나 일반적인 시나리오는 항목 중 일부만 원격 서버와 동기화된다는 것입니다. 그래서 의도 서비스가 너무 무거워. 심지어 서비스 접근. 이러한 유형의 작업을 수행하기 위해 콘텐츠 제공자 또는 그 일부 구성 요소에서 asyncTask 또는 스레드를 사용할 수 있습니다. 아니면 서비스를 사용하는 확실한 이유가 있으며 서비스 도우미 - 서비스 프로세서 경로를 거쳐야합니다. 나는 진지한 응용에 대해 이야기하고있다.

의견은 무엇입니까?

+0

를 귀하의 질문에 대답 할 수의 I/REST 개발을 안드로이드 너무 새로운 해요 , 그리고 난 내 애플 리케이션을위한 좋은 아키텍처와 함께 올라오고있어 어려움이 있지만 어쩌면 다음과 같은 링크가 도움이 될 수도 있습니다 (두 부분도 있습니다) : http://neilgoodman.net/2011/12/26/modern-techniques-for -implementing-rest-clients-on-android-4-0-and-below-part-1/ – yniq

답변

2

콘텐츠 공급자로부터 활동을 시작하는 것이 우아하거나 이 맨 위에있는 활동에서 시작해야합니다.

은 콘텐츠 공급자로부터의 활동을 시작하지 않습니다. AsyncTask, Service 또는 Content Provider 요청 여부에 관계없이 모든 작업이 시작되어야합니다 ...

AsyncTasks는 일반적으로 좋지 않습니다. 구성 변경 (예 : 화면 방향 변경)을 처리 할 때 결함이 발생합니다. 로더가 이것에 대한 해결책이지만 어려운 부분은 네트워크 호출과 함께 포장하는 것입니다. 한 가지 해결책은 사용자 정의 로더 (AsyncTaskLoader 서브 클래 싱)에서 네트워크 호출을 작성하는 것입니다.

그러나 내 경우 Google IO IO 프레젠테이션을 따랐습니다. 서비스 객체 (네트워크 질의를 수행하기 위해 스레드를 시작 함)에서 서버에 대한 요청을 관리하기위한 ServiceHelper 클래스를 작성했습니다. ServiceHelper는 호출하는 Activity로부터 생성 될 수있는 ResultReceivers를 관리한다. 이를 통해 활동은 조회가 시작되고 종료 될 때 (또는 오류가 발생할 때)와 같이 서비스 요청의 이벤트를 청취 할 수 있습니다. 이러한 스레드는 네트워크 쿼리를 호출 한 다음 결과 데이터를 ContentProvider에 저장합니다 (캐싱 및 필요한 경우 여러 액티비티 전반에서 사용).

동시에 네트워크 스레드가 쓸 끝점을 수신하는 CursorLoader가 활동에 있습니다. 분명히 자신을 해결할 수있는 중층이 있습니다.그러한 구현을위한 캐싱 정책 및 오버 헤드와 같은 하지만 이는 실제로 구축중인 앱과 통합하려는 API에 달려 있습니다.

그래, 나는 2010 년 프리젠 테이션이 여전히 유효하다고 생각한다. 그의 프리젠 테이션에는 많은 막연한 부분이 있었고 오늘도 계속된다. 당신은 아직도 당신의 응용 프로그램

희망을 위해 일하는 디자인을 해결해야합니다, 내 생각은 시작하는 데 도움이됩니다 ..

+0

데이터베이스의 리소스에 대한 플래그는 어떻게 작성 했습니까? 프리젠 테이션을하는 사람은 그 주제에 대해 다소 모호하며 플래그의 의미를 계속 변경합니다. –

+0

죄송합니다.이 답변에 늦어서 사과드립니다. 지금 방금 보았습니다. 비디오를 본 이후로 잠시 지났지 만, 데이터가 유효한지 여부를 결정하는 플래그에 대해 이야기하고 있다고 의심됩니다. 나는 당신이 사용하고있는 API와 캐시 정책에 달려 있다고 생각합니다. – kwazi