在崩溃日志中,我发现了一个非常奇怪的应用程序错误,该错误在android 7.0-8.0上针对少量用户,但发生频率很高。我无法重现该问题,这里是反映当前应用程序状态的代码。
我对我的应用程序类有静态引用。
public class MyApplication extends Application {
private static MyApplication sInstance;
public static MyApplication get() {
return sInstance;
}
@Override
public void onCreate() {
super.onCreate();
sInstance = this;
}
}
在主要活动中,我进行单例初始化:
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。
onCreate
的{{1}}似乎在Application
的{{1}}时没有被调用,这确实很奇怪。
有没有人遇到过同样的问题?
Android组件如此奇怪的初始化过程的原因可能是什么?
答案 0 :(得分:-1)
您可以使用安全的方法
Home