Додавання балів до прийнятої відповіді:
Дивіться про використання IntentService в Android API. наприклад:
public class SimpleWakefulService extends IntentService {
public SimpleWakefulService() {
super("SimpleWakefulService");
}
@Override
protected void onHandleIntent(Intent intent) { ...}
Щоб створити компонент IntentService для вашої програми, визначте клас, який розширює IntentService, і всередині нього визначте метод, який перекриває onHandleIntent ().
Також дивіться вихідний код IntentService, це конструктор та методи життєвого циклу, як OnStartCommand ...
@Override
public int More ...onStartCommand(Intent intent, int flags, int startId) {
onStart(intent, startId);
return mRedelivery ? START_REDELIVER_INTENT : START_NOT_STICKY;
}
Спільне обслуговування AsyncTask - це один із найкращих підходів для багатьох випадків використання, коли корисна навантаження не величезна. або просто створити клас, що розширює IntentSerivce. З версії Android 4.0 всі операції з мережею повинні знаходитись у фоновому режимі, інакше компіляція / складання програми не вдається. окремий потік від інтерфейсу користувача. Клас AsyncTask пропонує один з найпростіших способів зняти нове завдання з потоку інтерфейсу користувача. Більше обговорення цієї теми дивіться у публікації в блозі
з посібника для розробників Android :
IntentService - це базовий клас для Служб, які обробляють асинхронні запити (виражаються як Інтенти) на вимогу. Клієнти надсилають запити через дзвінки startService (Intent); служба запускається у міру необхідності, обробляє кожну Намір, у свою чергу, використовуючи робочу нитку, і зупиняється, коли вона закінчується без роботи.
Шаблон дизайну, який використовується в IntentService
: Цей шаблон "процесор черги робочої черги" зазвичай використовується для завантаження завдань з основного потоку програми. Клас IntentService існує для спрощення цієї моделі та піклування про механіку. Щоб використовувати його, розгорніть IntentService та вкажіть onHandleIntent (Намір). IntentService отримає Інтенти, запустить робочу нитку та припинить послугу у відповідних випадках.
Усі запити обробляються в одному робочому потоці - вони можуть зайняти стільки часу, скільки потрібно (і не перекриють основний цикл програми), але одночасно буде оброблено лише один запит.
Клас IntentService забезпечує просту структуру для виконання операції на одному фоновому потоці. Це дозволяє йому обробляти тривалі операції, не впливаючи на чутливість вашого користувальницького інтерфейсу. Також на IntentService не впливає більшість подій життєвого циклу користувальницького інтерфейсу, тому він продовжує працювати в обставинах, які б вимкнули AsyncTask.
У IntentService є кілька обмежень:
Він не може безпосередньо взаємодіяти з вашим користувальницьким інтерфейсом. Щоб помістити його результати в інтерфейс користувача, вам потрібно надіслати їх до активності. Робочі запити виконують послідовно. Якщо операція запущена в IntentService, і ви надсилаєте їй ще один запит, запит чекає, поки перша операція не буде завершена. Операцію, запущену на IntentService, не можна перервати. Однак у більшості випадків
IntentService є кращим способом простих фонових операцій
**
Волейбольна бібліотека
Існує бібліотека під назвою волей-бібліотека для розробки додатків для андроїд-мереж
. Вихідний код доступний для громадськості в GitHub.
Офіційна документація для Android щодо найкращих практик для фонових завдань : допомагає краще зрозуміти службу намірів, потоки, обробник та сервіс. а також виконання мережевих операцій
IntentService is used for short tasks (etc) and a service is for long ones
де ти це читав?