作者gn00618777 (非常念旧)
看板AndroidDev
标题[问题] 监听电话
时间Fri Feb 23 15:33:33 2018
我写了一个监听电话功能在我APP内。参照网路上实作都可以实作出来。
但是当我滑掉APP时,打电话到我的手机上实APK竟然还可以侦测到。表示我APK
根本没有release。我滑掉APK一下再开一次,打电话时会出现两次,
再滑掉APK再开一次会出现三次依此类推。以下是我的code
MainActivity:
onCreate(){
telM = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
telM.listen(new TelListener(this),
PhoneStateListener.LISTEN_CALL_STATE);
}
protected onDestroy(){
telM.listen(new TelListener(null), PhoneStateListener.LISTEN_NONE);
telM = null;
finish();
}
Telistener:
public class TelListener extends PhoneStateListener {
switch (state) {
case TelephonyManager.CALL_STATE_RINGING://此时为响铃状态
//这边出现好多次
LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
break;
case TelephonyManager.CALL_STATE_IDLE:
break;
}
super.onCallStateChanged(state, incomingNumber);
}
请问有没有人遇过这种状况呢?
以下LZN大已有帮我解答上面的疑问非常感谢。大致整理了一下我的错误还有额外的疑问
------------------------------------------------------------------------------
我怀疑APK没有release是因为我还有写个 NotificationListenerService,需要在
安着手机的设定 -> 应用程式 -> 特别存取权-> 通知存取权 选择我的service打开
这样我的APK就能接收到应用程式的通知。
打开这个service之後,我明明已经滑掉APK了,有看到他呼叫onDestroy()。
我打电话时,却还是收到 call event。
我将 service 关掉後,一样保持在 onCreate() 内
telM = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
telM.listen(new TelListener(this),
PhoneStateListener.LISTEN_CALL_STATE);
滑掉APK後就不会有 event 上来了。再重开一次也不会有重复的event。
第一个问题是: 为何我开启service,滑掉apk後,他会呼叫 onDestroy(),而关掉
service,滑掉APK却不会呼叫 onDestroy()?
第二个问题是: 为何我将service打开时,滑掉APK,却仍然有 call event 上来?
这看似APK就是真的没有 release? 但是我打开APK时,里面的变数
如:onCreate() telM明明也就是 null的,难道他之前
telM.listen(new TelListener(this)
new TelListener(this) 完全没释放吗?
打得很长^^"不知道有没有人看懂我的问题.. 感谢指教
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.220.69.181
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1519371217.A.4CE.html
※ 编辑: gn00618777 (61.220.69.181), 02/23/2018 15:50:38
1F:→ LZN: onCreate的new TelListener用变数存,telM.listen(变数,..) 02/23 16:30
2F:→ LZN: onDestroy不要在new TelListener,使用onCreate中使用的变数 02/23 16:31
3F:→ LZN: 试试看 02/23 16:31
4F:→ gn00618777: 这样可行耶! why??? 02/23 16:53
5F:→ gn00618777: 痾 因为new 是两个不同记忆体 02/23 16:54
※ 编辑: gn00618777 (61.220.69.181), 02/23/2018 17:27:08
※ 编辑: gn00618777 (61.220.69.181), 02/23/2018 17:29:02
※ 编辑: gn00618777 (61.220.69.181), 02/23/2018 17:29:25
6F:推 erty0402: 从recent app移掉并不能保证 ap会砍掉 02/23 19:51
7F:→ andy2151: 你是不是把Apk跟App搞混了 02/26 12:16