Я имею в виду соображения дизайна Android: AsyncTask vs Service (IntentService?)
В соответствии с обсуждением AsyncTask не подходит, поскольку он тесно связан с вашей деятельностью
Итак, я запускаю Thread
(я предполагаю, что AsyncTask и Thread принадлежат к той же категории), имеют в нем цикл бесконечности и выполнили следующее тестирование.
- я выйти мое приложение, удерживая нажатой программную клавишу "Назад", пока не увижу главный экран. Поток все еще запущен.
- я убить мое приложение, перейдя в Управление приложениями → Приложение → Силовая остановка. Поток остановлен.
Итак, я ожидаю, что после того, как я перейду от Thread
до Service
, мой Service
будет продолжать работать даже после того, как мое приложение выйти или убить.
Intent intent = new Intent(this, SyncWithCloudService.class);
startService(intent);
public class SyncWithCloudService extends IntentService {
public SyncWithCloudService() {
super("SyncWithCloudService");
}
@Override
protected void onHandleIntent(Intent intent) {
int i = 0;
while (true) {
Log.i("CHEOK", "Service i is " + (i++));
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Log.i("CHEOK", "", ex);
}
}
}
}
// Doesn't matter whether I use "android:process" or not.
<service
android:name="com.xxx.xml.SyncWithCloudService"
android:process=".my_process" >
</service>
Однако, на мой взгляд,
- я выйти мое приложение, удерживая нажатой программную клавишу "Назад", пока не увижу главный экран. Служба все еще работает.
- я убить мое приложение, перейдя в Управление приложениями → Приложение → Силовая остановка. Служба остановлена.
Кажется, что поведение Service
и Thread
одинаково. Итак, почему я должен использовать Service
вместо Thread
? Я что-то пропустил? Я думал, что мой Service
должен продолжать работать, даже после того, как я убью свое приложение?