diff options
author | Makoto Onuki <omakoto@google.com> | 2012-09-20 16:48:56 -0700 |
---|---|---|
committer | Makoto Onuki <omakoto@google.com> | 2012-09-21 10:57:49 -0700 |
commit | e7b2801cda823c63322b3291021677acfb8d33ef (patch) | |
tree | 4182ac957ea5c46ae924b7bea7f8f4f152e3ba45 /src | |
parent | a1593e6ed73bd928594929ea40dbe6c84fc0d4b6 (diff) |
[cherrypick] Fix potential issue in I3d791ce1f536680a9ca0db2c387f3aad36eda17f
Bug 7164046
Change-Id: Ic03bd6151ba5ee91287b248fe295614aa816f25b
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/dialer/calllog/CallLogFragment.java | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/com/android/dialer/calllog/CallLogFragment.java b/src/com/android/dialer/calllog/CallLogFragment.java index a59be8546..af32ef8f4 100644 --- a/src/com/android/dialer/calllog/CallLogFragment.java +++ b/src/com/android/dialer/calllog/CallLogFragment.java @@ -546,15 +546,27 @@ public class CallLogFragment extends ListFragment * Register a phone call filter to reset the call type when a phone call is place. */ private void registerPhoneCallReceiver() { + if (mPhoneStateListener != null) { + return; // Already registered. + } mTelephonyManager = (TelephonyManager) getActivity().getSystemService( Context.TELEPHONY_SERVICE); mPhoneStateListener = new PhoneStateListener() { @Override public void onCallStateChanged(int state, String incomingNumber) { - if (state == TelephonyManager.CALL_STATE_OFFHOOK || - state == TelephonyManager.CALL_STATE_RINGING) { - updateFilterTypeAndHeader(CallLogQueryHandler.CALL_TYPE_ALL); + if (state != TelephonyManager.CALL_STATE_OFFHOOK && + state != TelephonyManager.CALL_STATE_RINGING) { + return; } + mHandler.post(new Runnable() { + @Override + public void run() { + if (getActivity() == null || getActivity().isFinishing()) { + return; + } + updateFilterTypeAndHeader(CallLogQueryHandler.CALL_TYPE_ALL); + } + }); } }; mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); @@ -566,6 +578,7 @@ public class CallLogFragment extends ListFragment private void unregisterPhoneCallReceiver() { if (mPhoneStateListener != null) { mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE); + mPhoneStateListener = null; } } } |