活动onCreate

时间:2018-12-04 06:47:15

标签: java android

在崩溃日志中,我发现了一个非常奇怪的应用程序错误,该错误在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组件如此奇怪的初始化过程的原因可能是什么?

1 个答案:

答案 0 :(得分:-1)

您可以使用安全的方法

Home