【发布时间】:2018-12-04 06:47:15
【问题描述】:
在崩溃日志中,我发现了一些非常奇怪的应用程序错误,该错误发生在 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。
似乎Application 的onCreate 在MainActivity 的onCreate 的那一刻没有被调用,真的很奇怪。
有没有人遇到过同样的问题?
Android组件的这种奇怪的初始化过程可能是什么原因?
【问题讨论】:
-
sInstance声明在哪里? -
@VikashBijarniya 更新了代码
-
也分享您的清单
-
@sohaibkarim 请阅读说明,我无法重现我这边的问题,因此该应用程序运行良好。这意味着在应用程序清单中定义了 MyApplication。
-
您是否在 AndroidManifest 文件中添加了应用程序名称为 MyApplication?