diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2016-03-03 16:58:55 -0800 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2016-03-09 20:21:22 -0800 |
commit | 2e1efb480a9b77a97cb623d4f5faf6802a417422 (patch) | |
tree | 8c6c0f0f7d91c7fc7d4d8ca23092f5fa4be720c9 /src/com/android/launcher3/compat | |
parent | 726eb822d38ad422f37b74c4b0fc504a423ab926 (diff) | |
download | android_packages_apps_Trebuchet-2e1efb480a9b77a97cb623d4f5faf6802a417422.tar.gz android_packages_apps_Trebuchet-2e1efb480a9b77a97cb623d4f5faf6802a417422.tar.bz2 android_packages_apps_Trebuchet-2e1efb480a9b77a97cb623d4f5faf6802a417422.zip |
Changing the widget loading strategy
Widget is loaded only when the user enters the overview mode and we keep
the list updated as long as the user is in the overview mode. Once the user
leaves the overview mode, we stop responding to widget updates
Bug: 26077457
Change-Id: I9e4904b8f1300bfe0d77e2bc5f59aa6963fad8d1
Diffstat (limited to 'src/com/android/launcher3/compat')
3 files changed, 63 insertions, 0 deletions
diff --git a/src/com/android/launcher3/compat/AppWidgetManagerCompat.java b/src/com/android/launcher3/compat/AppWidgetManagerCompat.java index f0221bc24..811cacfc0 100644 --- a/src/com/android/launcher3/compat/AppWidgetManagerCompat.java +++ b/src/com/android/launcher3/compat/AppWidgetManagerCompat.java @@ -20,6 +20,7 @@ import android.app.Activity; import android.appwidget.AppWidgetHost; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProviderInfo; +import android.content.ComponentName; import android.content.Context; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; @@ -28,7 +29,9 @@ import android.os.Bundle; import com.android.launcher3.IconCache; import com.android.launcher3.LauncherAppWidgetProviderInfo; import com.android.launcher3.Utilities; +import com.android.launcher3.util.ComponentKey; +import java.util.HashMap; import java.util.List; public abstract class AppWidgetManagerCompat { @@ -62,6 +65,11 @@ public abstract class AppWidgetManagerCompat { return mAppWidgetManager.getAppWidgetInfo(appWidgetId); } + public LauncherAppWidgetProviderInfo getLauncherAppWidgetInfo(int appWidgetId) { + AppWidgetProviderInfo info = getAppWidgetInfo(appWidgetId); + return info == null ? null : LauncherAppWidgetProviderInfo.fromProviderInfo(mContext, info); + } + public abstract List<AppWidgetProviderInfo> getAllProviders(); public abstract String loadLabel(LauncherAppWidgetProviderInfo info); @@ -81,4 +89,8 @@ public abstract class AppWidgetManagerCompat { public abstract Bitmap getBadgeBitmap(LauncherAppWidgetProviderInfo info, Bitmap bitmap, int imageWidth, int imageHeight); + public abstract LauncherAppWidgetProviderInfo findProvider( + ComponentName provider, UserHandleCompat user); + + public abstract HashMap<ComponentKey, AppWidgetProviderInfo> getAllProvidersMap(); } diff --git a/src/com/android/launcher3/compat/AppWidgetManagerCompatV16.java b/src/com/android/launcher3/compat/AppWidgetManagerCompatV16.java index e9d2510e8..de9414ed2 100644 --- a/src/com/android/launcher3/compat/AppWidgetManagerCompatV16.java +++ b/src/com/android/launcher3/compat/AppWidgetManagerCompatV16.java @@ -21,6 +21,7 @@ import android.app.Activity; import android.appwidget.AppWidgetHost; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProviderInfo; +import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; @@ -31,7 +32,9 @@ import android.os.Bundle; import com.android.launcher3.IconCache; import com.android.launcher3.LauncherAppWidgetProviderInfo; import com.android.launcher3.Utilities; +import com.android.launcher3.util.ComponentKey; +import java.util.HashMap; import java.util.List; class AppWidgetManagerCompatV16 extends AppWidgetManagerCompat { @@ -91,4 +94,25 @@ class AppWidgetManagerCompatV16 extends AppWidgetManagerCompat { int imageWidth, int imageHeight) { return bitmap; } + + @Override + public LauncherAppWidgetProviderInfo findProvider( + ComponentName provider, UserHandleCompat user) { + for (AppWidgetProviderInfo info : mAppWidgetManager.getInstalledProviders()) { + if (info.provider.equals(provider)) { + return LauncherAppWidgetProviderInfo.fromProviderInfo(mContext, info); + } + } + return null; + } + + @Override + public HashMap<ComponentKey, AppWidgetProviderInfo> getAllProvidersMap() { + HashMap<ComponentKey, AppWidgetProviderInfo> result = new HashMap<>(); + UserHandleCompat user = UserHandleCompat.myUserHandle(); + for (AppWidgetProviderInfo info : mAppWidgetManager.getInstalledProviders()) { + result.put(new ComponentKey(info.provider, user), info); + } + return result; + } } diff --git a/src/com/android/launcher3/compat/AppWidgetManagerCompatVL.java b/src/com/android/launcher3/compat/AppWidgetManagerCompatVL.java index 3bc3d0d80..a1570e66a 100644 --- a/src/com/android/launcher3/compat/AppWidgetManagerCompatVL.java +++ b/src/com/android/launcher3/compat/AppWidgetManagerCompatVL.java @@ -21,6 +21,7 @@ import android.app.Activity; import android.appwidget.AppWidgetHost; import android.appwidget.AppWidgetProviderInfo; import android.content.ActivityNotFoundException; +import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; import android.content.res.Resources; @@ -40,8 +41,10 @@ import android.widget.Toast; import com.android.launcher3.IconCache; import com.android.launcher3.LauncherAppWidgetProviderInfo; import com.android.launcher3.R; +import com.android.launcher3.util.ComponentKey; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; @TargetApi(Build.VERSION_CODES.LOLLIPOP) @@ -145,4 +148,28 @@ class AppWidgetManagerCompatVL extends AppWidgetManagerCompat { c.setBitmap(null); return bitmap; } + + @Override + public LauncherAppWidgetProviderInfo findProvider(ComponentName provider, UserHandleCompat user) { + for (AppWidgetProviderInfo info : mAppWidgetManager + .getInstalledProvidersForProfile(user.getUser())) { + if (info.provider.equals(provider)) { + return LauncherAppWidgetProviderInfo.fromProviderInfo(mContext, info); + } + } + return null; + } + + @Override + public HashMap<ComponentKey, AppWidgetProviderInfo> getAllProvidersMap() { + HashMap<ComponentKey, AppWidgetProviderInfo> result = new HashMap<>(); + for (UserHandle user : mUserManager.getUserProfiles()) { + UserHandleCompat userHandle = UserHandleCompat.fromUser(user); + for (AppWidgetProviderInfo info : + mAppWidgetManager.getInstalledProvidersForProfile(user)) { + result.put(new ComponentKey(info.provider, userHandle), info); + } + } + return result; + } } |