summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2013-02-02 12:45:15 +0100
committerDanny Baumann <dannybaumann@web.de>2013-02-02 12:48:41 +0100
commit272ccf242459834cfd7f5a0407eb96754b5717b8 (patch)
treecf46ad57d8d6095e20b76caff4db7d6cdc7b6981
parente5eb971effcfbfd475113a1853794e5221eaadf0 (diff)
downloadpackages_apps_Contacts-272ccf242459834cfd7f5a0407eb96754b5717b8.tar.gz
packages_apps_Contacts-272ccf242459834cfd7f5a0407eb96754b5717b8.tar.bz2
packages_apps_Contacts-272ccf242459834cfd7f5a0407eb96754b5717b8.zip
Fix threads running after entering call log, possibly affecting battery
life. When having entered the call log or the call stats activities once, the contact lookup thread (which wakes once per second) continued to run even after leaving the activity. The root cause for that was that the ViewTreeObserver obtained at registerOnPreDrawListener() time was no longer valid when unregisterOnPreDrawListener() was called. Fix that by storing a reference to the observed view instead of the observer and fetching the current observer when needed. Change-Id: I3209712a52371f99772f522d03bc6b209272089c
-rw-r--r--src/com/android/contacts/calllog/CallLogAdapterHelper.java14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/com/android/contacts/calllog/CallLogAdapterHelper.java b/src/com/android/contacts/calllog/CallLogAdapterHelper.java
index a570e5c2b..a64fc8898 100644
--- a/src/com/android/contacts/calllog/CallLogAdapterHelper.java
+++ b/src/com/android/contacts/calllog/CallLogAdapterHelper.java
@@ -212,7 +212,7 @@ public class CallLogAdapterHelper implements ViewTreeObserver.OnPreDrawListener
*/
private final LinkedList<ContactInfoRequest> mRequests;
- private ViewTreeObserver mViewTreeObserver = null;
+ private View mOnPreDrawObservedView = null;
private Handler mHandler = new Handler() {
@Override
@@ -266,9 +266,9 @@ public class CallLogAdapterHelper implements ViewTreeObserver.OnPreDrawListener
public void registerOnPreDrawListener(View v) {
// Listen for the first draw
- if (mViewTreeObserver == null) {
- mViewTreeObserver = v.getViewTreeObserver();
- mViewTreeObserver.addOnPreDrawListener(this);
+ if (mOnPreDrawObservedView == null) {
+ mOnPreDrawObservedView = v;
+ v.getViewTreeObserver().addOnPreDrawListener(this);
}
}
@@ -276,10 +276,10 @@ public class CallLogAdapterHelper implements ViewTreeObserver.OnPreDrawListener
* Stop receiving onPreDraw() notifications.
*/
private void unregisterPreDrawListener() {
- if (mViewTreeObserver != null && mViewTreeObserver.isAlive()) {
- mViewTreeObserver.removeOnPreDrawListener(this);
+ if (mOnPreDrawObservedView != null) {
+ mOnPreDrawObservedView.getViewTreeObserver().removeOnPreDrawListener(this);
+ mOnPreDrawObservedView = null;
}
- mViewTreeObserver = null;
}
public void invalidateCache() {