2011-12-09 2 views
3

저는 안드로이드 개발의 첫 걸음을 딛고있는 .NET/iOS 개발자로서 경험이 많습니다. 잘못된 길을 피하는 데 도움이됩니다. 지도 :안드로이드 아키텍처의 첫 번째 단계 - 큰 실수를 피할 수있게 도와주세요.

기본적으로지도/목록에 위치를 표시하는 앱이 있습니다. 사용자가지도를 스크롤 할 때 위치는 JSON 웹 서비스에서 가져옵니다. 위치를 도청 할 수 있으며, 그 시점에서 다른 JSON 웹 서비스가 호출되어 해당 위치에 대한 실시간 정보를 검색합니다. 실시간 정보가 표시됩니다.

그래서, 다양한 '시작'안드로이드 문서를 읽은, 내가 상상 내가 필요

  1. 활동이 위치의 주요지도보기를 표시 할
  2. 목록을 표시하는 두 번째 활동 전망? 각 액티비티가 앱의 전체 화면이어야한다는 인상을 받기 때문에 이상하게 보입니다. 다른 UI 요소를 유지하고 싶습니다. (보기를 전환하는 단추, 설정을위한 단추 등) 가능합니까?
  3. 웹에서 위치를 검색하는 서비스 (또는 IntentService?). Broadcasts 또는 바인딩을 통해 새로운 위치를 검색 한 시점을 Activity 및 ContentProvider가 어떻게 알 수 있습니까?
  4. 내 위치를 캐시하고 유지하려면 ContentProvider. 새로운 데이터를 표시 할 수있을 때 콘텐츠 제공 업체가 활동에 브로드 캐스트해야할까요?

조금 잃어버린 느낌이 드네요.

카를로스

PS : 충분한 사람들이

+0

http://stackoverflow.com/questions/8428209/google-map-with-android/8428414#8428414 – MKJParekh

답변

1

예 위치

의 주요지도보기를 표시하는 활동을 통해 이동 더 후 어떤 제안을 원한다면

댓글을 확인하시기 바랍니다 귀하의 메시지 표시에 대한지도 오버레이 기술을 사용

두 번째 활동으로 목록보기를 표시 하시겠습니까? 이상한 것 같습니다. 각 액티비티는 앱인 의 전체 화면이어야한다는 인상을받습니다. 다른 UI 요소를 유지하고 싶습니다. (예 : 보기 전환 버튼, 설정 버튼 등) 가능합니까?

반드시 그렇지는 않습니다. Fragments API을 살펴보십시오. UI의 일부만 전환 할 수 있습니다. 그것은 안드로이드 3.0에서 소개되었지만, 이전의 안드로이드 버전에서도 사용할 수 있도록 그것의 공식 백 포트가 존재합니다.

버튼을 사용하면 버튼을 액티비티, 한 조각의지도 및 다른 조각의 목록에 넣은 다음 버튼을 유지하면서 목록으로지도를 전환 할 수 있습니다.

웹에서 위치를 검색하는 서비스 (또는 IntentService?). 브로드 캐스트를 통해 위치가 검색되었을 때 Activity 또는 ContentProvider가이를 알려야합니까? 아니면 바인딩해야합니까?

강력히 권고합니다. 파일을 다운로드하는 것과 같이 백그라운드에서 오래 지속되는 다운로드가있는 경우 서비스를 사용해야합니다. 단기 JSON 요청은 UI 프로세스에서 처리 할 수 ​​있고 처리해야합니다. 이를 위해서는 AsyncTask 또는 Executor을 사용하십시오. 거의 모든 요청을 서비스에 넣으려는 Google의 조언이 있지만 나를 믿어 라.

내 위치를 캐시하고 유지하려면 ContentProvider. 새로운 데이터가 으로 표시 될 때 콘텐츠 제공 업체가 해당 활동에 브로드 캐스트해야할까요?

필요하지 않습니다. 다른 응용 프로그램이나 시스템에서 내용에 액세스 할 수있게하려는 경우 ContentProvider 만 필요합니다. HTTP 캐싱의 경우 데이터베이스/파일 시스템에 직접 액세스하거나 더 나은 방법으로 Apache HTTP Client Cache을 사용할 수 있습니다. 이미 임베디드 된 Apache HTTP 클라이언트를 사용하면 잘 작동합니다.

+0

감사합니다. 매우 포괄적입니다. 몇 가지 질문 : (1) 모노를 사용하고 있다고 언급했는데 백 포트가이 접근법과 호환되는지 여부를 알고 있습니까? 그리고 (2) 내가 ContentProvider를 사용하지 않는다면, 데이터 레이어를 어떻게 만드는지 조금은 혼란 스럽습니다. 개체를 데이터베이스로 serialize/deserialize하는 singleton 클래스를 사용합니까? 본질적으로 각 위치 객체는 DB에 저장해야하는 다양한 필드 (예 : 위도/경도/이름)를 가지므로 앱로드간에 유지할 수 있습니다. –

1
  1. 포인트 1과 2에 대해 조언을하지 않는 내가, 안드로이드 모노로 개발됩니다 : 당신은 화면의 일부를 업데이트 할 조각을 사용할 수, 활동 여러 프래그먼트의 컨테이너 역할을합니다 (API 레벨 10 이하의 조각을 이식하기위한 호환성 라이브러리 사용)

  2. 원격 웹 서비스에서 위치를 가져 오려면 서비스 대신 AsyncTask를 사용해야합니다.

  3. AsyncTask를 원격 가져 오기 완료시 호출 될 콜백 onPostExecute (..)를 가지고, 이것은 목록,지도 또는 조각

1

1을 업데이트 할 수 있습니다. 지도보기에 MapActivity를 사용할 수 있습니다.

2. 위치 UPDATOR 튜토리얼

http://www.vogella.de/articles/AndroidLocationAPI/article.html

4에 대한 링크를 따라 호야 대신 ListActiviy

3의 단일 뷰에서 버튼을 포함하는 활동과 장소의 목록보기를 사용합니다.u는 u는 그것을

관련 문제