summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorAdam Cohen <adamcohen@google.com>2010-12-17 12:03:17 -0800
committerAdam Cohen <adamcohen@google.com>2010-12-17 12:09:50 -0800
commitfb60386b46d0c6216c765c10bd33ac42ca780917 (patch)
tree3328cd44ed4084970b5734e13a16c1d1273c7712 /core/java
parent8903058a4a77ae920502054ba136b1b4539f1ea1 (diff)
downloadframeworks_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.java11
-rw-r--r--core/java/android/widget/AdapterViewAnimator.java11
-rw-r--r--core/java/android/widget/ListView.java3
-rw-r--r--core/java/android/widget/RemoteViewsAdapter.java11
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();
}