[英]Application onCreate called(not called) after Activity onCreate
在崩潰日志中,我發現了一個非常奇怪的應用程序錯誤,該錯誤在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
中的Application
中的時刻是不叫onCreate
的MainActivity
,真是不可思議。 有沒有人遇到過同樣的問題? Android組件如此奇怪的初始化過程的原因可能是什么?
您可以使用一種安全的方法:
public static MyApplication get() {
if(sInstance == null){
sInstance = this;
}
return sInstance;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.