Я прочитал всю документацию об AsyncTasks, Службах, ... Довольно ясно, для чего нужна удаленная Служба.Но у меня возникают проблемы, получая выгоду от LocalService?Типичный пример - «воспроизведение музыки» или загрузка большого файла.Но зачем мне для этого запускать локальную Службу?
Я выполнил небольшую асинхронную задачу, имитирующую такую задачу.
AsyncTask<String, Integer, String> async = new AsyncTask<String, Integer, String>() {
@Override
protected String doInBackground(String... params) {
for (int i = 0; i < 100; i++) {
try {
Thread.sleep(500);
System.out.println(i);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
return null;
}
};
async.execute("");
Большинство ответов таково, что (Локальная) Служба предназначена длядолгосрочные действия, которые должны выполняться, даже когда основное действие закрыто.Хорошо, но я могу сделать это также с помощью задачи Async в Main Activity:
Button btnFinish = (Button) findViewById(R.id.button1);
btnFinish.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
Нажатие кнопки вызывает onDestroy (), но задача Async все еще выполняется?Так разве это не то же самое, что запуск AsyncTask из службы?
// РЕДАКТИРОВАТЬ: Я выполнил пару тестов, и я почти уверен, что Async Task работает так же долго, как процесс делает.Так что, если бы я обернул его в локальную службу (обычным способом) - он бы тоже дожил до тех пор, пока процесс ...
Так почему же все используют локальную службу для таких задач, как загрузка файлов?, синхронизация, ...?!