В моей Android проекта, у меня есть нормальный Service
:OnDestroy() обратного вызова службы
public class MyService extends Service{
@Override
public int onStartCommand(...){...}
...
@Override
public void onDestroy() {
super.onDestroy();
Log.d("MyApp","MyService onDestroy() is called!");
}
}
В моем BroadcastReceiver
классе, я останавливаюсь MyService
& сделать еще одну задачу:
public static class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
context.stopService(new Intent(context, MyService.class));
doAnotherTask();
}
}
По моим log, onDestroy()
из MyService
выполнен после doAnotherTask()
.
Как я могу гарантировать, что onDestory()
от MyService
выполнен до doAnotherTask()
?
P.S .: Я думал, что я мог бы сделать что-то вроде:
boolean isStopped = context.stopService(new Intent(context, MyService.class));
if(isStopped){
doAnotherTask();
}
Но это может быть возможно, что нет никакого обслуживания было начато, а это значит, stopService(...)
ничего не делает. Поэтому я не могу полагаться на свой выше код.
если onDestroy уже уничтожает его, то зачем вручную останавливать его? или если вам нужно остановить его, то почему внутри onDestroy()? – Saqib
@ Сакиб, боюсь, вы не поняли мой вопрос правильно. Я называю stopService(), после которого я делаю NotherTask(), вот и все. Системные вызовы onDestroy() Я этого не сделал, я только stopService(). Но у меня есть что-то в onDestroy() обратном вызове. –
Вы пробовали небольшую задержку между двумя задачами? – Saqib