Добрый день. У меня ужасная ситуация. Я создаю логику общего доступа к местоположению в сеансе. Я сохраняю этот сеанс на сервере в mysql. Когда андроид переходит к этому действию, я вставляю соответствующую информацию о пользователе. Столбец, поэтому сеанс прекращается для противоположной стороны. Все отлично, пока не возникнет одна проблема. Android не обеспечивает обратный вызов для приложения, которое было удалено из недавних, что означает, что приложение было полностью убито. Я нашел там обходной путь. Я использую службу и запуск службы, как только она достигает желаемой активности. В службе у меня есть простая вещь, называемая onTaskRemoved(), которая уведомляет меня, как только приложение было убито, проводя его из последних. Все хорошо до того момента, когда я хочу позвонить на свой сервер чтобы удалить столбец. Вызов не просто пройдет, я никогда не получу там никакого ответа, но в onDestroy() все работает как положено. Собственно вот код
@Override
public void onTaskRemoved(Intent rootIntent) {
destroySession();
super.onTaskRemoved(rootIntent);
}
private void destroySession() {
Log.d("Fsafasfsafasfas", "destroySession: " + opponentId + " my user id" + sharedHelper.getUserId());
Call<ResponseBody> locationCall = Retrofit.getInstance().getInkService().requestFriendLocation(sharedHelper.getUserId(), opponentId, "", "", Constants.LOCATION_REQUEST_TYPE_DELETE);
locationCall.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response == null) {
destroySession();
return;
}
if (response.body() == null) {
destroySession();
return;
}
try {
String responseBody = response.body().string();
Log.d("Fsafasfsafasfas", "onResponse: " + responseBody);
JSONObject jsonObject = new JSONObject(responseBody);
boolean success = jsonObject.optBoolean("success");
if (success) {
stopSelf();
} else {
destroySession();
}
} catch (IOException e) {
stopSelf();
e.printStackTrace();
} catch (JSONException e) {
stopSelf();
e.printStackTrace();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
destroySession();
}
});
}
Вызов никогда не пройдет, я думаю, поскольку единственный журнал, который печатается, это журналы идентификатора и ничего больше. Кто-нибудь знает, что происходит? И как я могу справиться с этой ситуацией?