Blankj / Blankj/AndroidUtilCode

UtilsActivityLifecycleImpl里对Application生命周期的监听

Đang mở
#1,605 3 bình luận 0 reaction 1 người được giao Được @Blankj nhận Xem trên GitHub
help wanted
Ngôn ngữ chính
Java
Star
33.6k
Fork
10.6k
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

在Utils里的init初始化后会自动绑定UtilsBridge.init(sApp),接着UtilsBridge的init里会绑定UtilsActivityLifecycleImpl
public static void init(final Application app) {
if (app == null) {
Log.e("Utils", "app is null.");
return;
}
if (sApp == null) {
sApp = app;
UtilsBridge.init(sApp);
UtilsBridge.preLoad();
return;
}
if (sApp.equals(app)) return;
UtilsBridge.unInit(sApp);
sApp = app;
UtilsBridge.init(sApp);
}

static void init(Application app) {
UtilsActivityLifecycleImpl.INSTANCE.init(app);
}

在Application的生命周期里onstop和onresume里都会去调用processHideSoftInputOnActivityDestroy方法

private void processHideSoftInputOnActivityDestroy(final Activity activity, boolean isSave) {
try {
if (isSave) {
Window window = activity.getWindow();
final WindowManager.LayoutParams attrs = window.getAttributes();
final int softInputMode = attrs.softInputMode;
window.getDecorView().setTag(-123, softInputMode);
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
} else {
final Object tag = activity.getWindow().getDecorView().getTag(-123);
if (!(tag instanceof Integer)) return;
UtilsBridge.runOnUiThreadDelayed(new Runnable() {
@Override
public void run() {
try {
Window window = activity.getWindow();
if (window != null) {
window.setSoftInputMode(((Integer) tag));
}
} catch (Exception ignore) {
}
}
}, 100);
}
} catch (Exception ignore) {
}
}

不是很明白为什么要强制对界面设置SOFT_INPUT_STATE_ALWAYS_HIDDEN,这样会导致我的软键盘在切换桌面时无法保持一直显示状态。。。。。

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.