diff options
author | Adam Cohen <adamcohen@google.com> | 2010-12-17 12:03:17 -0800 |
---|---|---|
committer | Adam Cohen <adamcohen@google.com> | 2010-12-17 12:09:50 -0800 |
commit | fb60386b46d0c6216c765c10bd33ac42ca780917 (patch) | |
tree | 3328cd44ed4084970b5734e13a16c1d1273c7712 /core/java | |
parent | 8903058a4a77ae920502054ba136b1b4539f1ea1 (diff) | |
download | frameworks_base-fb60386b46d0c6216c765c10bd33ac42ca780917.zip frameworks_base-fb60386b46d0c6216c765c10bd33ac42ca780917.tar.gz frameworks_base-fb60386b46d0c6216c765c10bd33ac42ca780917.tar.bz2 |
Addressing issues associated RemoteViewsAdapter's service crashes / disconnects
-See issue: 3052667
Change-Id: I95f1cac3defeadc38ac75453d9d59cd1b3cbcc83
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/android/widget/AbsListView.java | 11 | ||||
-rw-r--r-- | core/java/android/widget/AdapterViewAnimator.java | 11 | ||||
-rw-r--r-- | core/java/android/widget/ListView.java | 3 | ||||
-rw-r--r-- | core/java/android/widget/RemoteViewsAdapter.java | 11 |
4 files changed, 18 insertions, 18 deletions
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index 6309cac..0deb0a0 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -5184,6 +5184,8 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te public void onRemoteAdapterConnected() { if (mRemoteAdapter != mAdapter) { setAdapter(mRemoteAdapter); + } else if (mRemoteAdapter != null) { + mRemoteAdapter.superNotifyDataSetChanged(); } } @@ -5191,10 +5193,11 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te * Called back when the adapter disconnects from the RemoteViewsService. */ public void onRemoteAdapterDisconnected() { - if (mRemoteAdapter == mAdapter) { - mRemoteAdapter = null; - setAdapter(null); - } + // If the remote adapter disconnects, we keep it around + // since the currently displayed items are still cached. + // Further, we want the service to eventually reconnect + // when necessary, as triggered by this view requesting + // items from the Adapter. } /** diff --git a/core/java/android/widget/AdapterViewAnimator.java b/core/java/android/widget/AdapterViewAnimator.java index 162b030..ec8e93c 100644 --- a/core/java/android/widget/AdapterViewAnimator.java +++ b/core/java/android/widget/AdapterViewAnimator.java @@ -964,6 +964,8 @@ public abstract class AdapterViewAnimator extends AdapterView<Adapter> public void onRemoteAdapterConnected() { if (mRemoteViewsAdapter != mAdapter) { setAdapter(mRemoteViewsAdapter); + } else if (mRemoteViewsAdapter != null) { + mRemoteViewsAdapter.superNotifyDataSetChanged(); } } @@ -971,10 +973,11 @@ public abstract class AdapterViewAnimator extends AdapterView<Adapter> * Called back when the adapter disconnects from the RemoteViewsService. */ public void onRemoteAdapterDisconnected() { - if (mRemoteViewsAdapter != mAdapter) { - mRemoteViewsAdapter = null; - setAdapter(mRemoteViewsAdapter); - } + // If the remote adapter disconnects, we keep it around + // since the currently displayed items are still cached. + // Further, we want the service to eventually reconnect + // when necessary, as triggered by this view requesting + // items from the Adapter. } public void advance() { diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java index 3703846..6894c99 100644 --- a/core/java/android/widget/ListView.java +++ b/core/java/android/widget/ListView.java @@ -103,7 +103,7 @@ public class ListView extends AbsListView { Drawable mDivider; int mDividerHeight; - + Drawable mOverScrollHeader; Drawable mOverScrollFooter; @@ -1535,7 +1535,6 @@ public class ListView extends AbsListView { // reset the focus restoration View focusLayoutRestoreDirectChild = null; - // Don't put header or footer views into the Recycler. Those are // already cached in mHeaderViews; if (dataChanged) { diff --git a/core/java/android/widget/RemoteViewsAdapter.java b/core/java/android/widget/RemoteViewsAdapter.java index 52d9c08..a7bff62 100644 --- a/core/java/android/widget/RemoteViewsAdapter.java +++ b/core/java/android/widget/RemoteViewsAdapter.java @@ -148,11 +148,6 @@ public class RemoteViewsAdapter extends BaseAdapter { adapter.mMainQueue.removeMessages(0); adapter.mWorkerQueue.removeMessages(0); - // Clear the cache (the meta data will be re-requested on service re-connection) - synchronized (adapter.mCache) { - adapter.mCache.reset(); - } - final RemoteAdapterConnectionCallback callback = adapter.mCallback.get(); if (callback != null) { callback.onRemoteAdapterDisconnected(); @@ -335,8 +330,8 @@ public class RemoteViewsAdapter extends BaseAdapter { // Compose the loading view text TextView loadingTextView = (TextView) mLayoutInflater.inflate( - com.android.internal.R.layout.remote_views_adapter_default_loading_view, - layout, false); + com.android.internal.R.layout.remote_views_adapter_default_loading_view, + layout, false); loadingTextView.setHeight(mFirstViewHeight); loadingTextView.setTag(new Integer(0)); @@ -880,7 +875,7 @@ public class RemoteViewsAdapter extends BaseAdapter { // a chance to update itself and return new meta data associated with the new data. } - private void superNotifyDataSetChanged() { + void superNotifyDataSetChanged() { super.notifyDataSetChanged(); } |