Самый эффективный способ выполнения метода с заданным интервалом? - PullRequest
1 голос
/ 20 декабря 2011

Я хочу запускать определенный метод doThis() (который не требует значительных ресурсов процессора, это просто POST для веб-сервера) каждые 10 минут, а после завершения этого метода уведомлять пользователя (через Toast или Notification или что-то в этом роде).Но я не хочу блокировать поток пользовательского интерфейса, потому что я ожидаю, что пользователь все еще будет взаимодействовать с пользовательским интерфейсом.Какой самый эффективный способ сделать это?Через Handler?Или Service или какой-то (то есть IntentService)?

Ответы [ 4 ]

3 голосов
/ 20 декабря 2011

Самый чистый и эффективный способ IMO - использовать ScheduledThreadPoolExecutor , посмотрите мой ответ здесь для примера кода, надеюсь, эта помощь.

0 голосов
/ 20 декабря 2011

Как насчет AsyncTask ?

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

onPostExecute поможет вам уведомить пользователя, используя Toast

0 голосов
/ 20 декабря 2011

Я делаю это через AsyncTask.Метод doInBackground() выглядит примерно так (просто псевдокод):

doInBackground(String... params){ while (running){ doThis(); Thread.sleep(10 * 1000); } }

Я хотел бы добавить, что мое приложение выполняет эти обновления (GET и POST) чаще (каждый раз).5-10 секунд) и отображает новые значения для пользователя - вот почему я использую активность.Вместо этого вы можете запустить AsyncTask из службы.

Другой вариант, который у вас есть, - это использовать AlarmManager - хотя я не шел по этому пути.

0 голосов
/ 20 декабря 2011

Я порекомендую Класс таймера , поскольку вы заявили, что должны выполнить синхронизированное задание. Если вам нужно выполнить это действие во время работы вы можете использовать Timer класс для того же самого в самой Activity, иначе вы можете поместить его в Services для запуска в фоновом режиме.

Ссылка на эту ссылку. : http://developer.android.com/resources/articles/timed-ui-updates.html

...