여러 웹 서비스에 액세스하고 정보가 표시되는 여러 활동이있는 응용 프로그램에 가장 적합한 일반 디자인이 무엇인지 알아 내려고하고 있습니다.일반적인 응용 프로그램 디자인 (IntentService/ContentProvider/AsyncTask)
최신 Android 애플리케이션을 구현 한 방법은 다음과 같습니다. 웹 서비스에서 정보를 얻기위한 활동 요청을받는 IntentService
이 있습니다. 내 Service
은 요청의 상태 (시작/오류/완료)에 대해 ResultReceiver
을 통해 활동을 알립니다. 웹 서비스를 호출하고 결과 (xml/json)를 가져 와서 파싱 한 다음 해당 정보를 ContentProvider
(sqlite 데이터베이스로 백업)에 저장하고 ContentResolver
을 사용하여 변경 사항에 대한 모든 알림을 보냅니다. 활동은 변경 사항에 대한 알림을받습니다 (일부는 ContentObserver
을 사용하고 다른 사용자는 SimpleCursorAdapter
을 사용하며 자동으로 통지됩니다).
이제 내 방식의 문제점 :
- 내가 활동을 입력 할 때마다, 나는 위에서 설명한 방법을 통해 웹 서비스에서 정보를 요청하고 나는 그것을 채울, 특정 테이블의 모든 행을 삭제 새 정보 및 활동을 알립니다. 따라서 사용자가 뒤로 밀고 다시 들어가면 나는 전체 댄스를 다시합니다. 마지막 업데이트 된 시간 등 데이터베이스의 일부 필드를 추가해야한다고 생각합니다.하지만 정확히 어떻게 진행해야할지 모르겠습니다. 제안? 한 가지 대안은 알람을 사용하고 특정 간격으로 업데이트를 트리거하는 것입니다. 그러나 필자의 경우 명세서는 웹 서비스를 시작할 때마다 웹 서비스를 확인하도록 요구한다.
- 웹 서비스를 호출하면 다른 뷰 (이전에 가져온 정보가 포함되어 있고 웹 서비스 호출이 완료 될 때까지 데이터베이스에있는)에 대해 불확실한 진행률 표시 줄이 표시되지만 사용자는 상호 작용을 시작할 수 있습니다 보기와 이것은 좋지 않습니다 (정보가 데이터베이스에서 사라질 수도 있음). 상호 작용을 사용 중지하는 방법은 없나요? ProgressDialog가 떠오른다.
- 다른 활동으로 빠르게 이동하면 IntentService가 이전 웹 서비스 호출로 차단되고 최신 웹 서비스 호출에 도달하는 데 더 오래 걸립니다. 모든 웹 서비스에 대해 복수
IntentService
을 만들 수 있지만 이것이 그 목적이라고 생각하지 않습니다.
내가 취한 접근 방식이 실제로이 특정 응용 프로그램에 가장 적합한 것은 아니라는 느낌이 들었습니다. 부분적으로은 Google I/O 애플리케이션에서 영감을 받았습니다 (업데이트 된 sqlite 필드 등 모든 것을 이해할 수 없었습니다). 한 가지 대안은 모든 활동에서 AsyncTasks를 사용하는 것이 었습니다. 그러나 다른 활동에서 액세스하려면 정보를 어디에 저장할 수 있습니까? Application
의 목록에 있습니까? ID 관리는 어떨까요?
나는 당신의 의견/아이디어/제안에 정말로 관심이 있으며 어떻게하면 다음 응용 프로그램을 더 효율적이고 효과적으로 작동하게 할 수 있습니까?
글쎄, 전에 프리젠 테이션을 보았고, 개발할 때 영향을 받았다. 그러나 나는 충분히 확신하지 못했기 때문에 나는 완전히 가지 않았다. 접근법에 대한 구현 세부 사항을 더 많이 볼 수 있다면 도움이 될 것입니다. 다른 오픈 소스 안드로이드 애플리케이션을 추천 해 줄 수 있습니까? 감사. –
오픈 소스 예제도 찾을 수 없었기 때문에 처음부터 다시 구현해야했습니다. 그들이 말하는 것에 대한 예를 제공하지 않는다는 것이 아주 나쁜 ... – fedepaol