У меня проблемы с памятью после многократного запуска моего приложения.
java.lang.OutOfMemoryError: размер растрового изображения превышает бюджет виртуальной машины
Я полагаю, что каким-то образом у меня возникла утечка памяти, поэтому я создал файл DUMP HPROF и использовал инструмент MAT, чтобы выяснить, что не так.
Оказывается, после 5-кратного запуска приложения и выхода из него я нахожу 5 экземпляров своей активности и 5 экземпляров PhoneStateListener.
Если я удалю вызов PhoneStateListener, у меня больше не будет этой проблемы, и я вижу только 1 экземпляр моей Деятельности.
Вопрос в том, как мне решить эту проблему?
Спасибо
Daniel
Вот мой код:
Метод OnCreate:
telephonyManager.listen(mPhoneListener,
PhoneStateListener.LISTEN_SERVICE_STATE
| PhoneStateListener.LISTEN_SIGNAL_STRENGTH
| PhoneStateListener.LISTEN_CALL_STATE
| PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
| PhoneStateListener.LISTEN_DATA_ACTIVITY);
на занятии:
PhoneStateListener mPhoneListener = new PhoneStateListener() {
public void onCallStateChanged(int state,
java.lang.String incomingNumber) {
//do something
}
}
метод onDestroy:
telephonyManager.listen(mPhoneListener, PhoneStateListener.LISTEN_NONE);
mPhoneListener = null;