Merge "Fix jank issue in Settings caused by fetching tile info" into oc-mr1-dev

This commit is contained in:
TreeHugger Robot
2017-09-13 03:12:57 +00:00
committed by Android (Google) Code Review
2 changed files with 28 additions and 13 deletions

View File

@@ -26,6 +26,7 @@ import android.content.pm.ResolveInfo;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.drawable.Icon; import android.graphics.drawable.Icon;
import android.net.Uri; import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.UserHandle; import android.os.UserHandle;
@@ -546,24 +547,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 || if (tile == null || tile.metaData == null ||
!tile.metaData.containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) { !tile.metaData.containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) {
return; 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); @Override
final Bundle bundle = getBundleFromUri(context, uriString, providerMap); protected void onPostExecute(Bundle bundle) {
final String overrideSummary = getString(bundle, META_DATA_PREFERENCE_SUMMARY); if (bundle == null) {
final String overrideTitle = getString(bundle, META_DATA_PREFERENCE_TITLE); return;
if (overrideSummary != null) { }
tile.remoteViews.setTextViewText(android.R.id.summary, overrideSummary); final String overrideSummary = getString(bundle, META_DATA_PREFERENCE_SUMMARY);
} final String overrideTitle = getString(bundle, META_DATA_PREFERENCE_TITLE);
if (overrideTitle != null) {
tile.remoteViews.setTextViewText(android.R.id.title, overrideTitle); 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) { private static String getString(Bundle bundle, String key) {

View File

@@ -66,6 +66,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@@ -438,6 +439,8 @@ public class TileUtilsTest {
tile.metaData.putString(TileUtils.META_DATA_PREFERENCE_SUMMARY_URI, URI_GET_SUMMARY); tile.metaData.putString(TileUtils.META_DATA_PREFERENCE_SUMMARY_URI, URI_GET_SUMMARY);
tile.remoteViews = mock(RemoteViews.class); tile.remoteViews = mock(RemoteViews.class);
TileUtils.updateTileUsingSummaryUri(mContext, tile); TileUtils.updateTileUsingSummaryUri(mContext, tile);
ShadowApplication.runBackgroundTasks();
verify(tile.remoteViews, times(1)).setTextViewText(anyInt(), eq(expectedSummary)); verify(tile.remoteViews, times(1)).setTextViewText(anyInt(), eq(expectedSummary));
} }