作者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/m.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