[問題] 監聽電話

看板AndroidDev作者 (非常念舊)時間6年前 (2018/02/23 15:33), 6年前編輯推噓1(106)
留言7則, 4人參與, 6年前最新討論串1/1
我寫了一個監聽電話功能在我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://www.ptt.cc/bbs/AndroidDev/M.1519371217.A.4CE.html ※ 編輯: gn00618777 (61.220.69.181), 02/23/2018 15:50:38

02/23 16:30, 6年前 , 1F
onCreate的new TelListener用變數存,telM.listen(變數,..)
02/23 16:30, 1F

02/23 16:31, 6年前 , 2F
onDestroy不要在new TelListener,使用onCreate中使用的變數
02/23 16:31, 2F

02/23 16:31, 6年前 , 3F
試試看
02/23 16:31, 3F

02/23 16:53, 6年前 , 4F
這樣可行耶! why???
02/23 16:53, 4F

02/23 16:54, 6年前 , 5F
痾 因為new 是兩個不同記憶體
02/23 16:54, 5F
※ 編輯: 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

02/23 19:51, 6年前 , 6F
從recent app移掉並不能保證 ap會砍掉
02/23 19:51, 6F

02/26 12:16, 6年前 , 7F
你是不是把Apk跟App搞混了
02/26 12:16, 7F
文章代碼(AID): #1QZyFHJE (AndroidDev)
文章代碼(AID): #1QZyFHJE (AndroidDev)