Как делать периодические запросы на отдых от Activity? - PullRequest
0 голосов
/ 04 октября 2011

Одно из моих действий периодически обновляет близких друзей, местоположение которых получается из службы отдыха

В настоящее время я использую postDelay:

private Runnable updateNearbyFriendsTask = new Runnable() {
    @Override
    public void run() {

        list = api.getNearby(.....)

        handler.postDelayed(this, UPDATE_RATE); 
    }
};

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

Как правильно делать периодические фоновые запросы на отдых от активности? Я не хочу создавать сервис для этого, потому что этот метод отдыха используется только в этом упражнении.

EDIT

В настоящее время переключено на использование ScheduledExecutor

this.scheduledExecutor.scheduleWithFixedDelay(new UpdateNearbyFriendsTask(), 0, UPDATE_RATE, TimeUnit.MILLISECONDS);

private class UpdateNearbyFriendsTask implements Runnable() {
    @Override
    public void run() {

        list = api.getNearby(.....)

        runOnUiThread(.....)
    }
};

Ответы [ 3 ]

0 голосов
/ 04 октября 2011

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

Для отметки таймера вы можете использовать диспетчер тревог или что-то еще (я не очень хорош в этом: P)

0 голосов
/ 04 октября 2011

Я не вижу, в чем проблема с созданием Сервиса, даже если он используется только для этого действия.

При этом посмотрите на TimerTask .Кажется, делать то, что вы хотите.

0 голосов
/ 04 октября 2011

Как насчет приемника BroadCast с использованием диспетчера аварий .. http://developer.android.com/reference/android/app/AlarmManager.html

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