fix: 修复首次初始化数据库Hotseat位置混乱问题

This commit is contained in:
TongTongStudio
2026-06-11 17:06:03 +08:00
parent caa5568419
commit bb90b742d6

View File

@@ -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 -> {