From c06457326509ec625d90b26828d6cc1417f4d9a3 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Thu, 31 Mar 2016 13:59:46 -0400 Subject: [PATCH] Fix missing summaries Handle non-cached tiles by doing lookup from component name. Change-Id: I979e2df2eed4a065f290c5c0e66276d08b4fb0af Fixes: 27942733 --- .../settings/dashboard/DashboardAdapter.java | 13 +++++++++++++ .../android/settings/dashboard/SummaryLoader.java | 12 +++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java index 8082f62e2b7..292244c492d 100644 --- a/src/com/android/settings/dashboard/DashboardAdapter.java +++ b/src/com/android/settings/dashboard/DashboardAdapter.java @@ -15,6 +15,7 @@ */ package com.android.settings.dashboard; +import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; import android.support.v7.widget.PopupMenu; @@ -96,6 +97,18 @@ public class DashboardAdapter extends RecyclerView.Adapter categories) { mCategories = categories; diff --git a/src/com/android/settings/dashboard/SummaryLoader.java b/src/com/android/settings/dashboard/SummaryLoader.java index e6c124376b9..86cffdea5f0 100644 --- a/src/com/android/settings/dashboard/SummaryLoader.java +++ b/src/com/android/settings/dashboard/SummaryLoader.java @@ -16,6 +16,7 @@ package com.android.settings.dashboard; import android.app.Activity; +import android.content.ComponentName; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; @@ -38,7 +39,7 @@ public class SummaryLoader { public static final String SUMMARY_PROVIDER_FACTORY = "SUMMARY_PROVIDER_FACTORY"; private final Activity mActivity; - private final ArrayMap mSummaryMap = new ArrayMap<>(); + private final ArrayMap mSummaryMap = new ArrayMap<>(); private final List mTiles = new ArrayList<>(); private final Worker mWorker; @@ -74,10 +75,15 @@ public class SummaryLoader { } public void setSummary(SummaryProvider provider, final CharSequence summary) { - final Tile tile = mSummaryMap.get(provider); + final ComponentName component= mSummaryMap.get(provider); mHandler.post(new Runnable() { @Override public void run() { + // Since tiles are not always cached (like on locale change for instance), + // we need to always get the latest one. + Tile tile = mAdapter.getTile(component); + if (tile == null) return; + if (DEBUG) Log.d(TAG, "setSummary " + tile.title + " - " + summary); tile.summary = summary; mAdapter.notifyChanged(tile); } @@ -138,7 +144,7 @@ public class SummaryLoader { SummaryProvider provider = getSummaryProvider(tile); if (provider != null) { if (DEBUG) Log.d(TAG, "Creating " + tile); - mSummaryMap.put(provider, tile); + mSummaryMap.put(provider, tile.intent.getComponent()); if (mListening) { // If we are somehow already listening, put the provider in that state. provider.setListening(true);