簡體   English   中英

Activity onCreate之后調用(未調用)應用程序onCreate

[英]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中的時刻是不叫onCreateMainActivity ,真是不可思議。 有沒有人遇到過同樣的問題? Android組件如此奇怪的初始化過程的原因可能是什么?

您可以使用一種安全的方法:

public static MyApplication get() {
if(sInstance == null){
 sInstance = this;
 }
    return sInstance;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM