Подтвердить что ты не робот

Android Asynctask vs Runnable vs timertask vs Service

Каковы различия между этими методами (классами)?

Я хочу запустить приложение, которое запускается каждые 5 секунд, очищает память, когда она закончена, и когда процессор находится в режиме ожидания, вы можете запустить приложение. Так что приложение не привязано к wakelock.

Привет,

Шафкату

4b9b3361

Ответ 1

Разница между первыми тремя - это просто объем работы, который был сделан для вас. И Service - это основной Android компонент приложения.

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

Интерфейс Runnable лежит в основе потоковой передачи Java. Интерфейс Runnable должен быть реализован любым классом, экземпляры которого предназначены для выполнения потоком.

TimerTask является частью стандартной Java и может использоваться для замедленного или повторного выполнения для некоторого фрагмента (Runnable). Это использование обескуражено на Android. Вместо этого вы можете использовать обработчик.

Служба может использоваться как независимая и не зависящая от пользовательского интерфейса часть вашего приложения для Android. Он может запускаться и создавать свои собственные потоки и может быть запущен для пользовательского интерфейса или с помощью намерений через AlarmManager, например.

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

AlarmManager позволяет транслировать Intents через определенные промежутки времени и даже разрешать управление для пробуждения устройства или нет. Вам просто нужно определить BroadcastReceiver в своей службе и объявить его в вашем манифесте.

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