在Chrome 90中,Google 发布了一个名为'Tab Freeze”的功能,用于暂停活动标签页以减少系统资源使用。但是,这可能会导致 Android 应用程序挂起,因为 Chrome 的进程获取了所有可用的系统资源,而其他进程则变得无法响应。
为了解决这个问题,我们可以使用以下代码示例,在您的 Android 应用程序中设置一个选项来禁用 Chrome 的'Tab Freeze”功能:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
String freezedPackageName = "com.android.chrome";
String freezedClassName = "com.google.android.apps.chrome.Main";
// 禁用 Chrome 的冻结选项
PackageManager pm = getPackageManager();
PackageManager.NameNotFoundException e = null;
for (String packageStr : pm.getPackagesForUid(Binder.getCallingUid())) {
try {
PackageInfo pi = pm.getPackageInfo(packageStr, PackageManager.GET_ACTIVITIES);
if (pi == null || pi.activities == null) {
continue;
}
for (ActivityInfo activityInfo : pi.activities) {
if (activityInfo == null) {
continue;
}
String className = activityInfo.name;
if (freezedPackageName.equals(pi.packageName) && freezedClassName.equals(className)) {
RestrictedLockUtilsInternal.setDeviceOwner(getBaseContext(), null);
RestrictedLockUtilsInternal.checkIfRestrictionEnforced(getBaseContext(),
UserManager.DISALLOW_APPS_CONTROL, Binder.getCallingUid());
// 禁用 Chrome 的冻结选项
UserHandle userHandle = UserHandle.of(UserHandle.getCallingUserId());
DevicePolicyManager DPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
String frozenKey = "tab_management_freeze_threshold";
String packageName = freezedPackageName;
DPM.setUserRestriction(userHandle,
UserManager.DISALLOW_APPS_CONTROL);
DPM.addUserRestriction(userHandle,
UserManager.DISALLOW_APPS_CONTROL);
// 禁用 Chrome 的冻结选项
String restriction = "home_launchable_apps";
ArrayList
这