我试图在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.1Mb 的内存泄漏。
sendAbort()
是我的活动中执行很少操作的方法。
有人可以指导我如何解决这个问题吗?我在内存管理上苦苦挣扎。