[ToA] Move IO to background thread

Bug: 295826542
Bug: 312324895
Test: atest TermsOfAddressNotSpecifiedControllerTest, atest
TermsOfAddressNeutralControllerTest, atest
TermsOfAddressMasculineControllerTest, atest TermsOfAddressFeminineControllerTest

Change-Id: I45808815401f2caa24ffc03d634a4b2c90dfd55e
diff --git a/src/com/android/settings/localepicker/TermsOfAddressBaseController.java b/src/com/android/settings/localepicker/TermsOfAddressBaseController.java
index 34c502f..d9962de 100644
--- a/src/com/android/settings/localepicker/TermsOfAddressBaseController.java
+++ b/src/com/android/settings/localepicker/TermsOfAddressBaseController.java
@@ -26,8 +26,12 @@
 import com.android.settings.widget.TickButtonPreference;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
+
 public abstract class TermsOfAddressBaseController extends BasePreferenceController {
 
+    private static final Executor sExecutor = Executors.newSingleThreadExecutor();
     private PreferenceScreen mPreferenceScreen;
     private MetricsFeatureProvider mMetricsFeatureProvider;
     private TickButtonPreference mPreference;
@@ -46,8 +50,11 @@
         mPreferenceScreen = screen;
         mPreference = screen.findPreference(getPreferenceKey());
         mPreference.setOnPreferenceClickListener(clickedPref -> {
-            mGrammaticalInflectionManager.setSystemWideGrammaticalGender(
-                    getGrammaticalGenderType());
+            sExecutor.execute(
+                    () -> {
+                        mGrammaticalInflectionManager.setSystemWideGrammaticalGender(
+                                getGrammaticalGenderType());
+                    });
             setSelected(mPreference);
             mMetricsFeatureProvider.action(mContext, getMetricsActionKey());
             return true;