From 6d098e9ba893f56bdf6108507093c2790392a4e6 Mon Sep 17 00:00:00 2001 From: LoveSy Date: Mon, 22 Nov 2021 17:54:16 +0800 Subject: [PATCH] Cache bitmap icon (#1426) --- .../ui/activity/base/BaseActivity.java | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/lsposed/manager/ui/activity/base/BaseActivity.java b/app/src/main/java/org/lsposed/manager/ui/activity/base/BaseActivity.java index c9f04771..103a1ee7 100644 --- a/app/src/main/java/org/lsposed/manager/ui/activity/base/BaseActivity.java +++ b/app/src/main/java/org/lsposed/manager/ui/activity/base/BaseActivity.java @@ -48,6 +48,8 @@ import rikka.material.app.MaterialActivity; public class BaseActivity extends MaterialActivity { + private static Bitmap icon = null; + @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -79,18 +81,18 @@ public class BaseActivity extends MaterialActivity { for (var task : getSystemService(ActivityManager.class).getAppTasks()) { task.setExcludeFromRecents(false); } - Bitmap icon; - var drawable = getApplicationInfo().loadIcon(getPackageManager()); - if (drawable instanceof BitmapDrawable) { - icon = ((BitmapDrawable) drawable).getBitmap(); - } else { - icon = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); - final Canvas canvas = new Canvas(icon); - drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); - drawable.draw(canvas); + if (icon == null) { + var drawable = getApplicationInfo().loadIcon(getPackageManager()); + if (drawable instanceof BitmapDrawable) { + icon = ((BitmapDrawable) drawable).getBitmap(); + } else { + icon = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); + final Canvas canvas = new Canvas(icon); + drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); + drawable.draw(canvas); + } } setTaskDescription(new ActivityManager.TaskDescription(getTitle().toString(), icon)); - icon.recycle(); } @Override