android私有(private)属性突然变为空

标签 android memory jvm

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/

相关文章:

java - 为什么 VisualVM Profiler 不能分析我的 Scala 控制台应用程序?

android - 从 DDMS 中删除文件夹?

android - 4.0.3 r3 的sources.zip

C 信号量同步

c++ - 如何删除集合中的对象

Java网络启动: To increase system memory more than 2 GB

java - 使用 Android Async Http 处理成功请求返回

android - 为属性 'inputFile' 指定的 app-debug-unaligned.apk 不存在

heroku 上的 node.js Web 服务器 - 不断增长的内存

java - 为什么在Java中无法读取 volatile 并写入字段成员?