测试荣通 v3.5.0版本的 MD5 值为:bce18831444e62ca30602ccf71f8b981
以下内容为反编译后的 ActivityLifecycleImpl.java 源代码,内容仅作参考
package com.kongzue.dialogx.impl;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.util.ArrayMap;
import android.view.Window;
import com.kongzue.dialogx.DialogX;
import com.kongzue.dialogx.interfaces.BaseDialog;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
public class ActivityLifecycleImpl implements Application.ActivityLifecycleCallbacks {
private onActivityResumeCallBack onActivityResumeCallBack;
public interface onActivityResumeCallBack {
void getActivity(Activity activity);
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
}
public ActivityLifecycleImpl(onActivityResumeCallBack onActivityResumeCallBack2) {
this.onActivityResumeCallBack = onActivityResumeCallBack2;
}
public static void init(Context context, onActivityResumeCallBack onActivityResumeCallBack2) {
Application applicationContext = getApplicationContext(context);
if (applicationContext == null) {
DialogX.error("DialogX 未初始化。\n请检查是否在启动对话框前进行初始化操作,使用以下代码进行初始化:\nDialogX.init(context);\n\n另外建议您前往查看 DialogX 的文档进行使用:https://github.com/kongzue/DialogX");
} else {
applicationContext.registerActivityLifecycleCallbacks(new ActivityLifecycleImpl(onActivityResumeCallBack2));
}
}
public static Application getApplicationContext(Context context) {
if (context != null) {
return (Application) context.getApplicationContext();
}
try {
try {
return (Application) Class.forName("android.app.ActivityThread").getMethod("currentApplication", new Class[0]).invoke(null, null);
} catch (Exception unused) {
DialogX.error("DialogX.init: 初始化异常,请确保init方法内传入的Context是有效的。");
return null;
}
} catch (Exception unused2) {
return (Application) Class.forName("android.app.AppGlobals").getMethod("getInitialApplication", new Class[0]).invoke(null, null);
}
}
public static Activity getTopActivity() {
Map map;
try {
Class<?> cls = Class.forName("android.app.ActivityThread");
Object invoke = cls.getMethod("currentActivityThread", new Class[0]).invoke(null, new Object[0]);
Field declaredField = cls.getDeclaredField("mActivities");
declaredField.setAccessible(true);
if (Build.VERSION.SDK_INT < 19) {
map = (HashMap) declaredField.get(invoke);
} else {
map = (ArrayMap) declaredField.get(invoke);
}
} catch (Exception e) {
e.printStackTrace();
}
if (map.size() < 1) {
return null;
}
for (Object obj : map.values()) {
Class<?> cls2 = obj.getClass();
Field declaredField2 = cls2.getDeclaredField("paused");
declaredField2.setAccessible(true);
if (!declaredField2.getBoolean(obj)) {
Field declaredField3 = cls2.getDeclaredField("activity");
declaredField3.setAccessible(true);
return (Activity) declaredField3.get(obj);
}
}
return null;
}
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
if (this.onActivityResumeCallBack != null) {
Window window = activity.getWindow();
if (window != null && DialogX.useActivityLayoutTranslationNavigationBar && (window.getDecorView().getSystemUiVisibility() & 512) != 512) {
window.getDecorView().setSystemUiVisibility(512);
}
this.onActivityResumeCallBack.getActivity(activity);
}
}
@Override
public void onActivityResumed(Activity activity) {
if (activity.isDestroyed() || activity.isFinishing()) {
return;
}
onActivityResumeCallBack onactivityresumecallback = this.onActivityResumeCallBack;
if (onactivityresumecallback != null) {
onactivityresumecallback.getActivity(activity);
}
BaseDialog.onActivityResume(activity);
}
@Override
public void onActivityDestroyed(Activity activity) {
if (BaseDialog.getContext() == activity) {
BaseDialog.cleanContext();
}
}
@Override
public void onActivityPreDestroyed(final Activity activity) {
BaseDialog.recycleDialog(activity);
}
}