Delete config_killableInputMethods setting

This change effectively reverts the introduction of the
config_killableInputMethods setting in [1]. Permanently setting the
oom_score_adj of the IME process to CACHED leads to cases where the
lowmemorykiller kills it before it can be raised to "visible". In
order to achieve the killable IME behavior, enabling the setting
config_preventImeStartupUnlessTextEditor is sufficient.

Test: atest CtsInputMethodTestCases
Test: also manually on adt3
Bug: 232511947
[1]: Ib191d964de15bbb84daa8bbeca6f2dca6f96311c

Change-Id: I92091e0e1c26635b8fc38f1371445a17a0afafae
This commit is contained in:
Nikolas Havrikov
2022-05-13 14:03:52 +02:00
parent 5305852105
commit 8cbc4206f5
3 changed files with 1 additions and 34 deletions

View File

@@ -2963,9 +2963,6 @@
<item>com.android.inputmethod.latin</item>
</string-array>
<!-- Make the IME killable by the lowmemorykiller by raising its oom_score_adj. -->
<bool name="config_killableInputMethods">false</bool>
<!-- Prevent the InputMethodManagerService from starting up the IME unless
the currently focused view is a text editor. -->
<bool name="config_preventImeStartupUnlessTextEditor">false</bool>

View File

@@ -2254,7 +2254,6 @@
<java-symbol type="bool" name="config_supportTelephonyTimeZoneFallback" />
<java-symbol type="bool" name="config_autoResetAirplaneMode" />
<java-symbol type="string" name="config_notificationAccessConfirmationActivity" />
<java-symbol type="bool" name="config_killableInputMethods" />
<java-symbol type="bool" name="config_preventImeStartupUnlessTextEditor" />
<java-symbol type="array" name="config_nonPreemptibleInputMethods" />
<java-symbol type="bool" name="config_enhancedConfirmationModeEnabled" />

View File

@@ -90,13 +90,6 @@ final class InputMethodBindingController {
| Context.BIND_NOT_VISIBLE
| Context.BIND_NOT_FOREGROUND
| Context.BIND_IMPORTANT_BACKGROUND;
/**
* Binding flags for establishing connection to the {@link InputMethodService} when
* config_killableInputMethods is enabled.
*/
private static final int IME_CONNECTION_LOW_PRIORITY_BIND_FLAGS =
Context.BIND_AUTO_CREATE
| Context.BIND_REDUCTION_FLAGS;
/**
* Binding flags used only while the {@link InputMethodService} is showing window.
*/
@@ -108,16 +101,6 @@ final class InputMethodBindingController {
| Context.BIND_SHOWING_UI
| Context.BIND_SCHEDULE_LIKE_TOP_APP;
/**
* Binding flags for establishing connection to the {@link InputMethodService}.
*
* <p>
* This defaults to {@link InputMethodBindingController#IME_CONNECTION_BIND_FLAGS} unless
* config_killableInputMethods is enabled, in which case this takes the value of
* {@link InputMethodBindingController#IME_CONNECTION_LOW_PRIORITY_BIND_FLAGS}.
*/
private final int mImeConnectionBindFlags;
InputMethodBindingController(@NonNull InputMethodManagerService service) {
mService = service;
mContext = mService.mContext;
@@ -127,17 +110,6 @@ final class InputMethodBindingController {
mIWindowManager = mService.mIWindowManager;
mWindowManagerInternal = mService.mWindowManagerInternal;
mRes = mService.mRes;
// If configured, use low priority flags to make the IME killable by the lowmemorykiller
final boolean lowerIMEPriority = mRes.getBoolean(
com.android.internal.R.bool.config_killableInputMethods);
if (lowerIMEPriority) {
mImeConnectionBindFlags =
InputMethodBindingController.IME_CONNECTION_LOW_PRIORITY_BIND_FLAGS;
} else {
mImeConnectionBindFlags = InputMethodBindingController.IME_CONNECTION_BIND_FLAGS;
}
}
/**
@@ -500,8 +472,7 @@ final class InputMethodBindingController {
@GuardedBy("ImfLock.class")
private boolean bindCurrentInputMethodServiceMainConnection() {
mHasConnection = bindCurrentInputMethodService(mMainConnection,
mImeConnectionBindFlags);
mHasConnection = bindCurrentInputMethodService(mMainConnection, IME_CONNECTION_BIND_FLAGS);
return mHasConnection;
}