2012-05-01 8 views
9

два года прошло, происходит фрагмент, намерение службы, загрузчик курсора. Подходит ли этот подход по-прежнему, или есть какой-либо лучший или зрелый шаблон для разработки клиента для Android-андроида, особенно по сравнению с вариантом B (у меня нет привилегии для отправки изображения, вместо этого изображение можно найти от this post) ,Является ли подход клиентского приложения для остальных клиентов в google io 2010 еще актуальным?

Я знаю, что часть поставщика контента имеет важное значение. как насчет сервисного помощника и компонента обслуживания? До сих пор метод startService - это природа Контекста или его подклассов. что означает, что вспомогательным сервисом будет активность. Так элегантно ли инициировать активность у поставщика контента или же оно должно начинаться с активности сверху.

  • для тех из вас, кто выкопал в google io 2011 iosched app source code, вы рассмотрим статический класс SyncStatusUpdaterFragment в HomeActivity как помощник службы, хотя он не мог начать SyncService, но это слушать обратного вызова из SyncService и запуск обновления пользовательского интерфейса. Так можно ли это рассматривать как отклонение подхода Вергилия Добжански?

Наступает служба, служба намерения, asyncTask и нить. На мой взгляд, служба намерения подходит для синхронизации большого пакета данных с удаленного сервера. Вот почему они используют его в iosched. Но общий сценарий заключается в том, что только часть элементов будет синхронизироваться с удаленным сервером. Таким образом, служба намерения слишком тяжелая. даже сервисный подход. мы могли бы просто использовать asyncTask или поток в поставщике контента или какой-то компонент этого для выполнения этой задачи. Или есть какая-то убедительная причина использовать эту услугу и пройти через сервис-сервис-процессор. Я говорю о серьезном применении.

так что вы думаете?

+0

Я слишком новым для андроидов развития/REST, чтобы быть в состоянии ответить на ваш вопрос , и у меня возникают трудности с хорошей архитектурой для моего приложения, но, возможно, эта ссылка может помочь (есть и вторая часть): http://neilgoodman.net/2011/12/26/modern-techniques-for -implementing-rest-clients-on-android-4-0 и-below-part-1/ – yniq

ответ

2

Так элегантно инициировать действие от поставщика контента или , если оно должно быть инициировано из активности сверху.

never никогда не инициирует деятельность со стороны поставщика контента. Все должно начинаться с вашей деятельности, будь то запрос AsyncTask, Service или Content Provider ...

AsyncTasks - это, как правило, плохой выбор. Они просто ошибочны, когда дело касается изменений конфигурации (т. Е. Изменения ориентации экрана). Погрузчики - это решение, но сложная часть - это упаковка, которая вместе с вашими сетевыми вызовами. Одним из решений является создание сетевых вызовов с пользовательского загрузчика (подкласс AsyncTaskLoader).

Однако в моем случае я следил за презентацией 2010 года в формате Google. Создал класс ServiceHelper для управления запросами на сервер в объекте Service (который запускает потоки для выполнения сетевых запросов). ServiceHelper управляет ResultReceivers, которые могут быть созданы из вызывающего Activity. Это позволяет активности прослушивать события из запроса службы, например, когда запрос запускается и заканчивается (или когда он не работает). Эти потоки будут вызывать свои сетевые запросы, а затем сохранять полученные данные в ContentProvider (для кэширования и для использования в нескольких действиях, если это необходимо).

В то же время у меня есть CursorLoader в Activity, который прослушивает конечную точку, к которой будет писать сетевой поток. Очевидно, что есть много средств для выработки себя.таких как политика кэширования и накладные расходы для такой реализации. Но это действительно зависит от приложения, которое вы строите, и от API, с которым вы интегрируетесь.

Так что да, я думаю, что презентация 2010 года по-прежнему действительна. Было много неопределенных областей его выступления и продолжается сегодня. Вам придется еще разработать проект, который работает для вашего приложения

Будет надеяться, что мои мысли помогут вам начать работу ..

+0

Как вы разработали флаги для ресурсов в базе данных? Парень, делающий презентацию, расплывчато относится к этому вопросу и продолжает изменять значение флагов. –

+0

К сожалению, мои извинения за ответ на это так поздно, я только что видел это сейчас. Прошло некоторое время с тех пор, как я просмотрел видео, но подозреваю, что вы говорите о флажках, чтобы определить, сохраняются ли данные? Я думаю, что это будет зависеть от API, который вы используете, и от политики кэша. – kwazi