From fc442bdea14289656ef1f537103578eb71faf473 Mon Sep 17 00:00:00 2001 From: Jeff Brown Date: Fri, 10 Jun 2011 21:34:48 -0700 Subject: Ensure the RemoteViewsAdapter cleans up its HandlerThread. Using a finalizer for this is kind of gross but it is robust. We could try to hook onDetachedFromWindow() on the View but that would introduce additional lifecycle management to the adapter since a View could potentially be detached and then reattached, so we might need to recreate the handler, etc. Ideally this code should probably be changed to use AsyncTask. Change-Id: I9ad5fff388411619363e4a075ed0244966b38726 --- core/java/android/widget/RemoteViewsAdapter.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/core/java/android/widget/RemoteViewsAdapter.java b/core/java/android/widget/RemoteViewsAdapter.java index 40b0a9c..4c47d37 100644 --- a/core/java/android/widget/RemoteViewsAdapter.java +++ b/core/java/android/widget/RemoteViewsAdapter.java @@ -711,6 +711,17 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback requestBindService(); } + @Override + protected void finalize() throws Throwable { + try { + if (mWorkerThread != null) { + mWorkerThread.quit(); + } + } finally { + super.finalize(); + } + } + private void loadNextIndexInBackground() { mWorkerQueue.post(new Runnable() { @Override -- cgit v1.1