gpt4 book ai didi

java - 应用程序 onCreate 在 Activity onCreate 之后调用(未调用)

转载 作者:行者123 更新时间:2023-12-01 06:02:53 37 4
gpt4 key购买 nike

在崩溃日志中,我发现了非常奇怪的应用程序错误,该错误发生在 Android 7.0-8.0 上,对于一些少量用户来说,但非常频繁。我无法重现该问题,这里的代码反射(reflect)了当前应用程序的状态。

我有一个对我的应用程序类的静态引用。

public class MyApplication extends Application {
private static MyApplication sInstance;

public static MyApplication get() {
return sInstance;
}

@Override
public void onCreate() {
super.onCreate();
sInstance = this;
}
}

在主要 Activity 中,我对单例进行初始化:

public class MainActivity extends AppCompatActivity{

public void onCreate(final Bundle savedInstanceState) {
initSingletone();
super.onCreate(createBundleNoFragmentRestore(savedInstanceState))
}

public void initSingleTone(){
Singleton singleton = Singleton.getInstance();
}
}

单例:

public class Singleton{

public static Singleton instance;
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return ;
}

public Singleton(){
Context context = MyApplication.get();
final File baseDir = context.getCacheDir();
....
}
}

NullPointerException 发生在以下行。

final File baseDir = context.getCacheDir();

因为由于某些原因MyApplication.get()返回null。似乎在MainActivityonCreate时刻没有调用ApplicationonCreate,真的很奇怪。有人遇到过同样的问题吗?Android 组件初始化过程如此奇怪的原因可能是什么?

最佳答案

sInstance = this; 移至构造函数。

onCreate() 来得太晚了。

在我看来,这是一个 Android 错误。如果应用程序的 onCreate() 尚未完成执行,则没有明显的理由对 Activity 执行任何操作。

关于java - 应用程序 onCreate 在 Activity onCreate 之后调用(未调用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53607129/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com