Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener; (Android 8.0 )问题解决
这个问题之前就出现过这里记录下,方便提供给其他人处理并解决。如果没有完美解决您的问题,可以评论去留言。
直接上代码:
defaultConfig {
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '27.+'
}
}
}
}
}
这里在带上处理InputMethodManager键盘内存泄露处理的方法,这个是在其他的大神手里找到的,忘记哪个人了,希望看到留个言,把您的署名添上,在这多谢。
public static void onReleaseInputMethodManagerFocus(Activity paramActivity) {
if (paramActivity == null)
return;
int count = 0;
while (true) {
//给个5次机会 省得无限循环
count++;
if (count == 5)
return;
try {
InputMethodManager localInputMethodManager = (InputMethodManager) paramActivity.getSystemService(Context.INPUT_METHOD_SERVICE);
if (localInputMethodManager != null) {
Method localMethod = InputMethodManager.class.getMethod("windowDismissed", new Class[]{IBinder.class});
if (localMethod != null) {
localMethod.invoke(localInputMethodManager, new Object[]{paramActivity.getWindow().getDecorView().getWindowToken()});
}
Field mLastSrvView = InputMethodManager.class.getDeclaredField("mLastSrvView");
if (mLastSrvView != null) {
mLastSrvView.setAccessible(true);
mLastSrvView.set(localInputMethodManager, null);
return;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
欢迎大家在评论区提出问题,大家一起讨论解决。