REST и обновление списка - PullRequest
3 голосов
/ 22 июля 2010

В моем приложении у меня есть различные действия со списками.Данные поступают с сервера с помощью метода REST, и это делается только один раз, когда я запускаю приложение.

Шаблон, который я хотел бы установить, состоит в том, чтобы предварительно загружать все списки просмотра с помощью JSON, которые у меня уже есть в локальной системе, и параллельно запускать поток, который получает новые файлы JSONs с моими методами REST, изатем обновите списки просмотра.

На данный момент, когда я запускаю приложение, я анализирую свои файлы JSON и создаю все списки объектов.Позже я получаю к ним доступ статическим способом из моих списков-адаптеров.

Поэтому я хотел бы узнать, как лучше всего запустить этот поток REST и обновить представление списка.Должен ли я использовать AsyncTask?Услуга ?и затем, когда я обновляю свои локальные файлы JSON, мне нужно их повторно проанализировать, обновить списки объектов и вызвать в моих адаптерах NotifyDataChanged?

Спасибо

Ответы [ 2 ]

1 голос
/ 11 августа 2010

Итак, я нашел идеальное решение для своей проблемы.
Я использую sendBroadcast () в onPostExecute () моего AsyncTask, с вещаниемReceiver во всех моих действиях, о которых нужно было уведомить:

public class ConvenientActivity extends Activity {
    ...
    ...
    public class RefreshReceiver extends BroadcastReceiver {
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(MyMainClass.REFRESH_INTENT)) {
                mAdapter.refreshList();
            }
        }
    }
}

Это довольно просто и отлично работает.

0 голосов
/ 02 августа 2010

Так что, похоже, вопрос нуждается в деталях, поэтому я объясню, в чем проблема.

Когда я запускаю свое приложение, я помещаю заставку и анализирую свои файлы JSON в локальном формате, который я сохранил в прошлый раз. Затем я запускаю приложение, которое содержит вкладку с различными представлениями списка, использующими данные, которые я только что получил при разборе JSON.

Одновременно с запуском приложения я запускаю асинхронную задачу, которая запрашивает веб-службу и обновляет мои локальные файлы JSONs. Затем я снова анализирую файлы и хочу сообщить всем уже запущенным спискам, что им нужно обновить свои данные. И я действительно не знаю, как это сделать.

Вот код моей асинхронной задачи

class UpdateTask extends AsyncTask{
    @Override
    protected Object doInBackground(Object... params) {
        // Gets all the JSON Files and save them in local
        mJsonClient.loadDistantJSON();

        // Updates the cache maps and lists
        fillsMaps();
        fillsLists(); 
        return null;
    }

    protected void onPostExecute(Object downloadReturn) {
        // Notify the listviews
            ;
    }
}

В других действиях, которые содержат просмотр списка, я получаю статический доступ к списку кэша локально:

    myAdapter = new MyBaseAdapter(this,
        SplashScreen.list,listview);

Я был бы рад предоставить более подробную информацию, если хотите.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...