fix: 修复首次初始化数据库Hotseat位置混乱问题
This commit is contained in:
@@ -223,32 +223,30 @@ public class AppManager {
|
||||
}
|
||||
});
|
||||
|
||||
int hotseatCounter = 0;
|
||||
for (int i = 0; i < allFirstApps.size(); i++) {
|
||||
AppInfo appInfo = allFirstApps.get(i);
|
||||
if (DEFAULT_APP_PACKAGES.contains(appInfo.getPackageName())) {
|
||||
appInfo.setOutside(1);
|
||||
} else {
|
||||
appInfo.setOutside(0);
|
||||
}
|
||||
|
||||
if (DEFAULT_DIALER_PACKAGE.contains(appInfo.getPackageName())) {
|
||||
appInfo.setHotseat(1);
|
||||
appInfo.setHotseatPosition(hotseatCounter++);
|
||||
} else if (DEFAULT_CONTACT_PACKAGE.contains(appInfo.getPackageName())) {
|
||||
appInfo.setHotseat(1);
|
||||
appInfo.setHotseatPosition(hotseatCounter++);
|
||||
} else if (DEFAULT_MESSAGE_PACKAGE.contains(appInfo.getPackageName())) {
|
||||
appInfo.setHotseat(1);
|
||||
appInfo.setHotseatPosition(hotseatCounter++);
|
||||
} else if (DEFAULT_SETTINGS_PACKAGE.contains(appInfo.getPackageName())) {
|
||||
appInfo.setHotseat(1);
|
||||
appInfo.setHotseatPosition(hotseatCounter++);
|
||||
} else {
|
||||
appInfo.setHotseat(0);
|
||||
appInfo.setHotseatPosition(0);
|
||||
}
|
||||
appInfo.setPosition(i);
|
||||
appInfo.setOutside(DEFAULT_APP_PACKAGES.contains(appInfo.getPackageName()) ? 1 : 0);
|
||||
appInfo.setHotseat(0);
|
||||
appInfo.setHotseatPosition(0);
|
||||
}
|
||||
|
||||
// 按照严格优先级顺序分配 Hotseat 位置,解决应用缺失导致的空位问题
|
||||
int hotseatCounter = 1;
|
||||
List<Set<String>> priorityOrder = new ArrayList<>();
|
||||
priorityOrder.add(DEFAULT_DIALER_PACKAGE);
|
||||
priorityOrder.add(DEFAULT_CONTACT_PACKAGE);
|
||||
priorityOrder.add(DEFAULT_MESSAGE_PACKAGE);
|
||||
priorityOrder.add(DEFAULT_SETTINGS_PACKAGE);
|
||||
|
||||
for (Set<String> prioritySet : priorityOrder) {
|
||||
for (AppInfo app : allFirstApps) {
|
||||
if (prioritySet.contains(app.getPackageName())) {
|
||||
app.setHotseat(1);
|
||||
app.setHotseatPosition(hotseatCounter++);
|
||||
break; // 每个优先级分类只取一个匹配的应用
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (AppInfo app : allFirstApps) {
|
||||
@@ -651,32 +649,30 @@ public class AppManager {
|
||||
.sorted(manager.getAppComparator())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
final int[] hotseatCounter = {0};
|
||||
IntStream.range(0, allFirstApps.size()).forEach(index -> {
|
||||
AppInfo appInfo = allFirstApps.get(index);
|
||||
if (DEFAULT_APP_PACKAGES.contains(appInfo.getPackageName())) {
|
||||
appInfo.setOutside(1);
|
||||
} else {
|
||||
appInfo.setOutside(0);
|
||||
}
|
||||
|
||||
if (DEFAULT_DIALER_PACKAGE.contains(appInfo.getPackageName())) {
|
||||
appInfo.setHotseat(1);
|
||||
appInfo.setHotseatPosition(hotseatCounter[0]++);
|
||||
} else if (DEFAULT_CONTACT_PACKAGE.contains(appInfo.getPackageName())) {
|
||||
appInfo.setHotseat(1);
|
||||
appInfo.setHotseatPosition(hotseatCounter[0]++);
|
||||
} else if (DEFAULT_MESSAGE_PACKAGE.contains(appInfo.getPackageName())) {
|
||||
appInfo.setHotseat(1);
|
||||
appInfo.setHotseatPosition(hotseatCounter[0]++);
|
||||
} else if (DEFAULT_SETTINGS_PACKAGE.contains(appInfo.getPackageName())) {
|
||||
appInfo.setHotseat(1);
|
||||
appInfo.setHotseatPosition(hotseatCounter[0]++);
|
||||
} else {
|
||||
appInfo.setHotseat(0);
|
||||
appInfo.setHotseatPosition(0);
|
||||
}
|
||||
appInfo.setPosition(index);
|
||||
appInfo.setOutside(DEFAULT_APP_PACKAGES.contains(appInfo.getPackageName()) ? 1 : 0);
|
||||
appInfo.setHotseat(0);
|
||||
appInfo.setHotseatPosition(0);
|
||||
});
|
||||
|
||||
// 按照严格优先级顺序分配 Hotseat 位置
|
||||
final int[] hotseatCounter = {1};
|
||||
List<Set<String>> priorityOrder = new ArrayList<>();
|
||||
priorityOrder.add(DEFAULT_DIALER_PACKAGE);
|
||||
priorityOrder.add(DEFAULT_CONTACT_PACKAGE);
|
||||
priorityOrder.add(DEFAULT_MESSAGE_PACKAGE);
|
||||
priorityOrder.add(DEFAULT_SETTINGS_PACKAGE);
|
||||
|
||||
priorityOrder.forEach(prioritySet -> {
|
||||
allFirstApps.stream()
|
||||
.filter(app -> prioritySet.contains(app.getPackageName()))
|
||||
.findFirst()
|
||||
.ifPresent(app -> {
|
||||
app.setHotseat(1);
|
||||
app.setHotseatPosition(hotseatCounter[0]++);
|
||||
});
|
||||
});
|
||||
|
||||
allFirstApps.forEach(app -> {
|
||||
|
||||
Reference in New Issue
Block a user