summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Songchun Fan <schfan@google.com> 2024-01-19 14:47:30 -0800
committer Songchun Fan <schfan@google.com> 2024-01-19 14:56:08 -0800
commit60204b635ab3c24e29e9c24640316d0bbb7babc9 (patch)
tree6e7e7b5e3c3e46b98973c2bb506165c43d3ea4e6
parentf8a667575a3c73888c446485187b675e04bdedb3 (diff)
[SettingsProvider] move handler to background thread
SettingsRegistry's handler takes care of notifying settings changes to listeners as well as scheduling jobs. Previously it runs on the main looper of SettingsProvider, which is effectively on the main thread of SystemServer because SettingsProvider shares the same process as SystemServer. Its tasks can be blocking which can block the main thread of SystemServer. Moving the handler to a background thread instead. BUG: 319046998 Test: presubmit Change-Id: I68f022437d1180fdb41d1472524b7e2c277703cb
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java6
1 files changed, 3 insertions, 3 deletions
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index b0abf92ffe08..954a051af282 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -406,7 +406,7 @@ public class SettingsProvider extends ContentProvider {
Process.THREAD_PRIORITY_BACKGROUND);
mHandlerThread.start();
mHandler = new Handler(mHandlerThread.getLooper());
- mSettingsRegistry = new SettingsRegistry();
+ mSettingsRegistry = new SettingsRegistry(mHandlerThread.getLooper());
}
SettingsState.cacheSystemPackageNamesAndSystemSignature(getContext());
synchronized (mLock) {
@@ -2876,8 +2876,8 @@ public class SettingsProvider extends ContentProvider {
private String mSettingsCreationBuildId;
- public SettingsRegistry() {
- mHandler = new MyHandler(getContext().getMainLooper());
+ SettingsRegistry(Looper looper) {
+ mHandler = new MyHandler(looper);
mGenerationRegistry = new GenerationRegistry(UserManager.getMaxSupportedUsers());
mBackupManager = new BackupManager(getContext());
}