diff options
| author | 2017-09-14 02:27:06 +0000 | |
|---|---|---|
| committer | 2017-09-14 02:27:06 +0000 | |
| commit | daf30767d1d8c5b69deecf5df6894f97fbfaafa3 (patch) | |
| tree | 55de1ddca5a0afdd5268b2dbd306bbceeca20d4a | |
| parent | b3289a385e57ff4e398b950f9131e466136193aa (diff) | |
| parent | 9ebf5a82204d86b526f9ce9bc17d8e3e1f19162a (diff) | |
Merge "Fix jank issue in Settings caused by fetching tile info" into oc-mr1-dev am: 4562ecebc6
am: 9ebf5a8220
Change-Id: Ia34424f3b5f3f1882721d4d1aed85207113f000f
| -rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java | 38 | ||||
| -rw-r--r-- | packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java | 3 |
2 files changed, 28 insertions, 13 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java b/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java index 713e9675cccd..9b75c00aeb3a 100644 --- a/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java @@ -26,6 +26,7 @@ import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.graphics.drawable.Icon; import android.net.Uri; +import android.os.AsyncTask; import android.os.Bundle; import android.os.RemoteException; import android.os.UserHandle; @@ -534,24 +535,35 @@ public class TileUtils { } } - public static void updateTileUsingSummaryUri(Context context, Tile tile) { + public static void updateTileUsingSummaryUri(Context context, final Tile tile) { if (tile == null || tile.metaData == null || - !tile.metaData.containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) { + !tile.metaData.containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) { return; } - final Map<String, IContentProvider> providerMap = new HashMap<>(); + new AsyncTask<Void, Void, Bundle>() { + @Override + protected Bundle doInBackground(Void... params) { + return getBundleFromUri(context, + tile.metaData.getString(META_DATA_PREFERENCE_SUMMARY_URI), new HashMap<>()); + } - final String uriString = tile.metaData.getString(META_DATA_PREFERENCE_SUMMARY_URI); - final Bundle bundle = getBundleFromUri(context, uriString, providerMap); - final String overrideSummary = getString(bundle, META_DATA_PREFERENCE_SUMMARY); - final String overrideTitle = getString(bundle, META_DATA_PREFERENCE_TITLE); - if (overrideSummary != null) { - tile.remoteViews.setTextViewText(android.R.id.summary, overrideSummary); - } - if (overrideTitle != null) { - tile.remoteViews.setTextViewText(android.R.id.title, overrideTitle); - } + @Override + protected void onPostExecute(Bundle bundle) { + if (bundle == null) { + return; + } + final String overrideSummary = getString(bundle, META_DATA_PREFERENCE_SUMMARY); + final String overrideTitle = getString(bundle, META_DATA_PREFERENCE_TITLE); + + if (overrideSummary != null) { + tile.remoteViews.setTextViewText(android.R.id.summary, overrideSummary); + } + if (overrideTitle != null) { + tile.remoteViews.setTextViewText(android.R.id.title, overrideTitle); + } + } + }.execute(); } private static String getString(Bundle bundle, String key) { diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java index 88035e4fc600..76f6a20959fb 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java @@ -66,6 +66,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; +import org.robolectric.shadows.ShadowApplication; import java.util.ArrayList; import java.util.Collections; @@ -438,6 +439,8 @@ public class TileUtilsTest { tile.metaData.putString(TileUtils.META_DATA_PREFERENCE_SUMMARY_URI, URI_GET_SUMMARY); tile.remoteViews = mock(RemoteViews.class); TileUtils.updateTileUsingSummaryUri(mContext, tile); + ShadowApplication.runBackgroundTasks(); + verify(tile.remoteViews, times(1)).setTextViewText(anyInt(), eq(expectedSummary)); } |