summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMakoto Onuki <omakoto@google.com>2012-09-20 16:48:56 -0700
committerMakoto Onuki <omakoto@google.com>2012-09-21 10:57:49 -0700
commite7b2801cda823c63322b3291021677acfb8d33ef (patch)
tree4182ac957ea5c46ae924b7bea7f8f4f152e3ba45
parenta1593e6ed73bd928594929ea40dbe6c84fc0d4b6 (diff)
downloadandroid_packages_apps_Dialer-e7b2801cda823c63322b3291021677acfb8d33ef.tar.gz
android_packages_apps_Dialer-e7b2801cda823c63322b3291021677acfb8d33ef.tar.bz2
android_packages_apps_Dialer-e7b2801cda823c63322b3291021677acfb8d33ef.zip
[cherrypick] Fix potential issue in I3d791ce1f536680a9ca0db2c387f3aad36eda17f
Bug 7164046 Change-Id: Ic03bd6151ba5ee91287b248fe295614aa816f25b
-rw-r--r--src/com/android/dialer/calllog/CallLogFragment.java19
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;
}
}
}