Причина этого в том, что onDestroy()
часто вообще не вызывается. Часто система просто убивает процесс без каких-либо обратных вызовов. Знать, когда onDestory()
будет уволен, немного сложно.
Срабатывает, главным образом, когда клиент и сервер отключены.
Существует два случая, когда клиент и сервер отключены:
- клиент явно отключается от сервера
- клиент просто исчезает
Когда вы убиваете приложение, вы запускаете явное отключение. В этом случае клиент отправит серверу сигнал о том, что он отключается, и сервер немедленно выполнит обратный вызов onDisconnect()
.
Когда вы выключаете Wi-Fi, ваше приложение не может сообщить серверу, что оно отключается. В этом случае onDisconnect()
сработает, как только сервер обнаружит, что клиент ушел.
Это может даже занять несколько минут, в зависимости от того, как настроены тайм-ауты для сокетов. Так что в этом случае вам просто нужно быть немного более терпеливым, что означает, что в вашем реальном приложении это будет выглядеть не очень хорошо.
Поэтому я бы посоветовал вам удалить значение в onPause()
методе вашей деятельности, например:
@Override
protected void onPause() {
super.onPause();
final DatabaseReference rRef = FirebaseDatabase.getInstance().getReference().child(toBeDeleted);
rRef.child(yourWishChild).removeValue();
}