Ответ 1
Это не проблема утечки памяти. Определение утечки памяти (из Википедии):
Утечка памяти в информатике (или утечка в этом контексте), происходит, когда компьютерная программа получает память, но не может освободить ее вернуться к операционной системе.
Здесь у вас противоположный случай - память освобождается раньше, чем должна (по крайней мере, с точки зрения вашей программы).
С сайта developer.android.com:
DeadObjectException расширяет RemoteException
Вызываемый объект умер, потому что процесс его размещения больше не существует.
Например:
У вас есть классы MyActivity
и MyService
. Вы используете Handler
/Messenger
для связи между ними.
Вы создаете Handler
и Messenger
в MyActivity
, а затем отправляете созданный экземпляр Messenger
в MyService
через Intent
. Затем вы делаете что-то, проходит время, и ваш MyActivity
уничтожается вместе с ним Handler
и Messenger
. Теперь, если вы не справитесь с этим хорошо, MyService
не будет знать, что его Messenger
больше не действителен, поэтому он пытается что-то отправить через него и получить DeadObjectexception
:
/* Отправьте сообщение этому обработчику сообщений.
Parameters:
сообщение Сообщение для отправки. Обычно извлекается с помощью Message.obtain().
Throws:
RemoteException Бросает DeadObjectException, если целевой обработчик больше не существует. */
public void send(Message message) throws RemoteException {...}