mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2024-12-26 09:02:34 -06:00
84 lines
3.3 KiB
Java
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) {
|
|
}
|
|
}
|
|
}
|