Rabbit-R1/switch port/java/sources/androidx/activity/ImmLeaksCleaner.java
2024-05-21 17:08:36 -04:00

84 lines
3.3 KiB
Java

package androidx.activity;
import android.app.Activity;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleEventObserver;
import androidx.lifecycle.LifecycleOwner;
import java.lang.reflect.Field;
/* loaded from: classes.dex */
final class ImmLeaksCleaner implements LifecycleEventObserver {
private static final int INIT_FAILED = 2;
private static final int INIT_SUCCESS = 1;
private static final int NOT_INITIALIAZED = 0;
private static Field sHField;
private static Field sNextServedViewField;
private static int sReflectedFieldsInitialized;
private static Field sServedViewField;
private Activity mActivity;
ImmLeaksCleaner(Activity activity) {
this.mActivity = activity;
}
@Override // androidx.lifecycle.LifecycleEventObserver
public void onStateChanged(LifecycleOwner lifecycleOwner, Lifecycle.Event event) {
if (event != Lifecycle.Event.ON_DESTROY) {
return;
}
if (sReflectedFieldsInitialized == 0) {
initializeReflectiveFields();
}
if (sReflectedFieldsInitialized == 1) {
InputMethodManager inputMethodManager = (InputMethodManager) this.mActivity.getSystemService("input_method");
try {
Object obj = sHField.get(inputMethodManager);
if (obj == null) {
return;
}
synchronized (obj) {
try {
try {
View view = (View) sServedViewField.get(inputMethodManager);
if (view == null) {
return;
}
if (view.isAttachedToWindow()) {
return;
}
try {
sNextServedViewField.set(inputMethodManager, null);
inputMethodManager.isActive();
} catch (IllegalAccessException unused) {
}
} catch (Throwable th) {
throw th;
}
} catch (ClassCastException unused2) {
} catch (IllegalAccessException unused3) {
}
}
} catch (IllegalAccessException unused4) {
}
}
}
private static void initializeReflectiveFields() {
try {
sReflectedFieldsInitialized = 2;
Field declaredField = InputMethodManager.class.getDeclaredField("mServedView");
sServedViewField = declaredField;
declaredField.setAccessible(true);
Field declaredField2 = InputMethodManager.class.getDeclaredField("mNextServedView");
sNextServedViewField = declaredField2;
declaredField2.setAccessible(true);
Field declaredField3 = InputMethodManager.class.getDeclaredField("mH");
sHField = declaredField3;
declaredField3.setAccessible(true);
sReflectedFieldsInitialized = 1;
} catch (NoSuchFieldException unused) {
}
}
}