Я пытаюсь запустить несколько асин c функций, когда пользователь закрывает мое приложение Android.
Идея состоит в том, что основной сервис остановится только после того, как эти функции будут завершены. , Проблема в том, что код внутри обратных вызовов, кажется, не запускается.
public class DeviceConnectionService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
...
return Service.START_STICKY; // Sticky so it doesn't close unless asked to
}
...
@Override
public void onTaskRemoved(Intent rootIntent) {
// Runs when the user closes the app
closeConnectionService();
super.onTaskRemoved(rootIntent);
}
private void closeConnectionService() {
Log.e(TAG, "CLOSING DEVICE CONNECTION SERVICE");
// When closing the app, we first stop all data collection
CommonSingleton.CallBackSdkOperation cb = new CommonSingleton.CallBackSdkOperation() {
@Override
public void onComplete() { // When the SDK is stopped
Log.e(TAG, "2"); // TODO: Doesn't seem to run
...
// After we close the SDK and stop all data collection, we send all remaining data to the server
DeviceDataLibrary.CallbackDataFileUpdate dataUpdateCallback = new DeviceDataLibrary.CallbackDataFileUpdate() {
@Override
public void onFinished() {
Log.e(TAG, "----------- All data updates finished");
stopSelf(); // after everything is done, we close this service
}
@Override
public void onError() {
Log.e(TAG, "----------- All data updates finished with errors");
stopSelf();
}
};
deviceData.writeRemainingData(dataUpdateCallback);
Log.e(TAG, "3");
}
};
CommonSingleton.getInstance().stopSDK(cb);
Log.e(TAG, "1");
}
Как вы можете видеть, у меня есть несколько журналов по всему коду, чтобы увидеть, что происходит.
Журнал только сообщает шаг "1".
Я искал ответ, но ничего не нашел. Я даже правильно подхожу к этому?
Спасибо за вашу помощь.