Каждые Х секунд получать данные из Интернета - PullRequest
0 голосов
/ 03 ноября 2011

В моем приложении каждые 30 секунд я должен перезагружать контент из Интернета. Проблема в том, что эта функция некоторое время работает нормально, но после этого (или когда устройство находится в режиме ожидания) контент перезагружается через 5 секунд, 7 секунд, .. в разные моменты времени, и я не понимаю, почему это случилось.

Вот мой код:

на onCreate() метод:

        handler1 = new Handler();
        t1 = new Timer();
        doReload1();

, где doReload1():

public void doReload1() {

        scanTask1 = new TimerTask() {
            public void run() {
                handler1.post(new Runnable() {
                    public void run() {
                        System.out.println("Every 30 sec getPlaylist");                     


                    }
                });
            }
        };

        t1.schedule(scanTask1, 300, 30000);
        try {
            GetPlaylists(); //method for get data from web
        } catch (Exception e) {
            System.out.println("You are in catch");
        }
    }

Ответы [ 2 ]

3 голосов
/ 03 ноября 2011

Лучше всего использовать AlarmManager , поскольку он будет обрабатывать все от вашего имени, необходимые для выполнения задачи, пока телефон спит.В ApiDemos, предоставленной Google, есть демонстрация использования этой техники.

Короче говоря, IntentService может перехватить PendingIntent из AlarmManager и затем загрузить веб-данные.Затем ваша активность может получить эти данные, когда захочет обновить свои данные.Или ваша служба может отправить сигнал в «Активность» для фактического обновления, поскольку новые данные доступны.

РЕДАКТИРОВАТЬ

Прямая ссылка на пример использования GoogleСигнализация

1 голос
/ 03 ноября 2011

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

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