Android TV 应用程序在严格模式下初始化我的 AAR 库,如下所示:
public class MainApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
LibraryApplication.init(this);
}}
图书馆
public class LibraryApplication extends Application {
@SuppressLint("StaticFieldLeak")
private static LibraryApplication instance;
@SuppressWarnings("unused")
public static void init(Application application) {
if (instance == null) {
instance = new LibraryApplication(application);
return;
}
throw new RuntimeException("Library already initialized.");
}
private final LibraryActivityHandler activityHandler;
public LibraryApplication(final Application application) {
this.activityHandler = new LibraryActivityHandler(this);
}}
图书馆 Activity 处理程序
class LibraryActivityHandler implements Application.ActivityLifecycleCallbacks {
private Activity currentActivity;
@Override
public void onActivityResumed(Activity activity) {
assert activity != null;
this.currentActivity = activity;
//Just to show you that activity is really not null
currentActivity.getLayoutInflater();
Log.debug("activity set");
}
boolean isActivityNull() {
Log.debug("is null: " + (currentActivity == null));
return currentActivity == null;
}
问题:在日志中我可以看到“activity set”,后来又可以看到“is null: true”。有人可以向我解释当前 Activity 如何变为空吗?
在使用 Android 和 Java 超过 10 年后,
我承认我对此没有太多想法。
编辑:该应用也在使用 Dagger 库,严格模式不会导致问题。
最佳答案
问题是由多进程应用引起的。
关于android私有(private)属性突然变为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59085520/