Fix ANR on ShorcutManager#getPinnedShortcuts

By design, ShorcutManager#getPinnedShortcuts is meant to called on
a work thread.

Fix: 183785618
Test: Switch the user profile, and function works properly.
Change-Id: I87b8d3f57123ff12f83f95fc7f053b8840028ebe
This commit is contained in:
Tsung-Mao Fang
2021-04-06 18:27:06 +08:00
parent 20e610b6bd
commit ebcabd9c07

View File

@@ -39,6 +39,7 @@ import android.util.Log;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import com.android.settings.Settings.CreateShortcutActivity; import com.android.settings.Settings.CreateShortcutActivity;
import com.android.settingslib.utils.ThreadUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -62,7 +63,7 @@ public class SettingsInitialize extends BroadcastReceiver {
final PackageManager pm = context.getPackageManager(); final PackageManager pm = context.getPackageManager();
managedProfileSetup(context, pm, broadcast, userInfo); managedProfileSetup(context, pm, broadcast, userInfo);
webviewSettingSetup(context, pm, userInfo); webviewSettingSetup(context, pm, userInfo);
refreshExistingShortcuts(context); ThreadUtils.postOnBackgroundThread(() -> refreshExistingShortcuts(context));
} }
private void managedProfileSetup(Context context, final PackageManager pm, Intent broadcast, private void managedProfileSetup(Context context, final PackageManager pm, Intent broadcast,
@@ -142,5 +143,4 @@ public class SettingsInitialize extends BroadcastReceiver {
} }
shortcutManager.updateShortcuts(updates); shortcutManager.updateShortcuts(updates);
} }
} }