diff options
| author | 2024-01-19 14:47:30 -0800 | |
|---|---|---|
| committer | 2024-01-19 14:56:08 -0800 | |
| commit | 60204b635ab3c24e29e9c24640316d0bbb7babc9 (patch) | |
| tree | 6e7e7b5e3c3e46b98973c2bb506165c43d3ea4e6 | |
| parent | f8a667575a3c73888c446485187b675e04bdedb3 (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.java | 6 |
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()); } |