MonoDroid Timer - PullRequest
       1

MonoDroid Timer

0 голосов
/ 21 февраля 2012

Если я настрою таймер так, как описывает эта статья , я не уверен в нескольких вещах.Я понимаю, что мой второй вопрос может иметь или не иметь определенного ответа, поэтому я приму в качестве ответа, если мой первый вопрос может быть решен.

1) Если таймер запущен одним действием и настроен на запусккаждые 5 минут до тех пор, пока не будет указано «остановить», влияет ли это завершение или отправка в фоновый режим изменяющимися действиями пользователя?Один раз, когда я использовал таймер, показался ОЧЕНЬ прерывистым, и я не знаю, сделал ли я что-то неправильно или просто врожденную проблему с таймерами.

2) Я видел, как несколько человек говорили, что дажеAndroid не рекомендует использовать таймеры.Я видел рекомендацию для postDelayed (), но, как объяснено в статье, на которую я ссылался, для задач, которые нужно повторять каждые X минут, это может быть проблематично.Есть ли более предпочтительный вариант, который мне не хватает?

Обычно я проверяю подключение к Интернету, прежде чем синхронизировать информацию с сервером.Если устройство не подключено, я хочу запустить таймер, который проверяет подключение и пытается запускать мой метод синхронизации каждые 5 или 10 минут до тех пор, пока таймер не будет успешным, и в этот момент таймер может остановиться.Этот таймер должен иметь возможность запускаться с любого действия, продолжать работу каждые 5 или 10 минут независимо от того, какое действие в настоящее время используется, и быть отмененным из любого действия.

1 Ответ

0 голосов
/ 21 февраля 2012

Взгляните на TinyIoC / TinyMessenger .

Я делаю то же, что вы описываете:

  1. Определение сообщений для определенных служб.
  2. Создание служб, которые подписываются на интересующие их сообщения.
  3. Подписка на сообщения службы при их запуске.

Если вы запускаете новуюпоток, сервис, который реализует таймер, вы можете запускать / останавливать / приостанавливать его из любого места, и вы можете получать любые сообщения, которые он передает (завершение / ошибка и т. д.)

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

Когда вы останавливаете службу, если у вас есть ссылка на поток, в котором она работает, вы просто передаете сообщение остановки службы и вызываете соединение().

Надеюсь, это поможет.

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