From c5bb5a8191a7651bb6c0f739b2d5c12dd1d04952 Mon Sep 17 00:00:00 2001 From: Braden Farmer Date: Tue, 7 Mar 2017 00:23:11 -0700 Subject: [PATCH] Fix some visual weirdness / rare crashes with pinning apps --- .../farmerbb/taskbar/service/TaskbarService.java | 34 ++++++++++++---------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/farmerbb/taskbar/service/TaskbarService.java b/app/src/main/java/com/farmerbb/taskbar/service/TaskbarService.java index d9ec0dbb..8981bfe8 100644 --- a/app/src/main/java/com/farmerbb/taskbar/service/TaskbarService.java +++ b/app/src/main/java/com/farmerbb/taskbar/service/TaskbarService.java @@ -451,17 +451,22 @@ public class TaskbarService extends Service { @TargetApi(Build.VERSION_CODES.LOLLIPOP_MR1) private void updateRecentApps(final boolean firstRefresh) { final PackageManager pm = getPackageManager(); - PinnedBlockedApps pba = PinnedBlockedApps.getInstance(this); final List entries = new ArrayList<>(); List launcherAppCache = new ArrayList<>(); int maxNumOfEntries = U.getMaxNumOfEntries(this); int realNumOfPinnedApps = 0; - - if(pba.getPinnedApps().size() > 0) { + + PinnedBlockedApps pba = PinnedBlockedApps.getInstance(this); + List pinnedApps = pba.getPinnedApps(); + List blockedApps = pba.getBlockedApps(); + List applicationIdsToRemove = new ArrayList<>(); + + // Filter out anything on the pinned/blocked apps lists + if(pinnedApps.size() > 0) { UserManager userManager = (UserManager) getSystemService(USER_SERVICE); LauncherApps launcherApps = (LauncherApps) getSystemService(LAUNCHER_APPS_SERVICE); - for(AppEntry entry : pba.getPinnedApps()) { + for(AppEntry entry : pinnedApps) { boolean packageEnabled = launcherApps.isPackageEnabled(entry.getPackageName(), userManager.getUserForSerialNumber(entry.getUserId(this))); @@ -469,9 +474,17 @@ public class TaskbarService extends Service { entries.add(entry); else realNumOfPinnedApps--; + + applicationIdsToRemove.add(entry.getPackageName()); } - realNumOfPinnedApps = realNumOfPinnedApps + pba.getPinnedApps().size(); + realNumOfPinnedApps = realNumOfPinnedApps + pinnedApps.size(); + } + + if(blockedApps.size() > 0) { + for(AppEntry entry : blockedApps) { + applicationIdsToRemove.add(entry.getPackageName()); + } } // Get list of all recently used apps @@ -523,17 +536,6 @@ public class TaskbarService extends Service { } } - // Filter out anything on the pinned/blocked apps lists - List applicationIdsToRemove = new ArrayList<>(); - - for(AppEntry entry : pba.getPinnedApps()) { - applicationIdsToRemove.add(entry.getPackageName()); - } - - for(AppEntry entry : pba.getBlockedApps()) { - applicationIdsToRemove.add(entry.getPackageName()); - } - // Filter out the currently running foreground app, if requested by the user SharedPreferences pref = U.getSharedPreferences(this); if(pref.getBoolean("hide_foreground", false)) { -- 2.11.0