Я пытаюсь использовать PhoneStateListener
для уведомления моего приложения, когда срабатывает входящий вызов, чтобы выполнить какое-либо действие. Я регистрирую свой метод PhoneStateListener
в onResume()
своей деятельности следующим образом.
@Override
protected void onResume() {
super.onResume();
tmgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
incomingCallListener=new IncomingCallListener();
tmgr.listen(incomingCallListener, phoneStateListener.LISTEN_CALL_STATE);
}
onPause()
метод моей деятельности я удаляю слушателя, используя следующий код.
@Override
protected void onPause() {
super.onPause();
incomingCallListener=null;
tmgr.listen(incomingCallListener, PhoneStateListener.LISTEN_NONE);
tmgr=null;
}
Мой входящий класс определяется как внутренний класс в том же действии следующим образом:
public class IncomingCallListener extends PhoneStateListener {
public IncomingCallListener() {
}
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (state == TelephonyManager.CALL_STATE_RINGING) {
if (qInProgress) {
if (qSource.equals(Loading.TYPE_FUN) || (qResumable)) {
//Allow to Resume
} else {
//Break and send abort
sendAbort();
}
}
}
}
}
Я использую LeakCanary lib для проверки утечки памяти, и я получаю утечку памяти в размере 6,1 МБ из-за своей активности.
sendAbort()
- это метод в моей деятельности, который выполняет несколько операций.
Может ли кто-нибудь направить меня, как позаботиться об этой проблеме? Я борюсь с управлением памятью.