Android Activity生命周期问题

时间:2017-03-02 11:39:06

标签: android android-activity crash activity-lifecycle

我正在处理最初由其他开发人员创建的项目。有一个根活动(让我们称之为CustomActivity),代码如下。

private static SomeOtherClass instance = null;

@Override
public void onCreate(final Bundle savedInstanceState)
{
    super.onCreate(null);

    if (!(Thread.getDefaultUncaughtExceptionHandler() instanceof CustomExceptionHandler)) {
        Thread.setDefaultUncaughtExceptionHandler(new CustomExceptionHandler());
    }

    // @see http://stackoverflow.com/questions/19545889/app-restarts-rather-than-resumes)
    if (!isTaskRoot() && getIntent().hasCategory(Intent.CATEGORY_LAUNCHER) && null != getIntent().getAction()
            && getIntent().getAction().equals(Intent.ACTION_MAIN)) {
        finish();
        return;
    }

    instance = new SomeOtherClass();

    this.screen = new CustomFragment();
    this.getFragmentManager.beginTransaction()
      .replace(R.id.content_frame, screen).commit();

    ...
}

@Override
protected void onDestroy()
{
    this.instance = null;
    ...
}

static public SomeOtherClass getInstance()
{
    return instance;
}

this.screen有一个点按CustomActivity.getInstance().methodCall()的按钮。其中一位测试人员表示,他只是点击了那个按钮,并在stacktrace中使用此方法崩溃了:Attempt to invoke virtual method '...CustomActivity.getInstance().methodCall()' on a null object reference

我不明白 - 由于活动生命周期,它是如何实现的。

根据堆栈跟踪,onCreate在之前的onDestroy之后不应被调用。即使最后一个可能发生在我们在另一个Activity中时(也就是说,this.screen在任何地方都没有取消),但this.screen片段不能在没有Activity娱乐的情况下呈现。我是对的吗?

P.S。:根本没有instance变量管理,SomeOtherClass没有自定义父类(只是默认对象)。

P.P.S。:nope,设备尚未锁定/应用程序刚启动。测试人员使用它,旋转手机以移除SIM卡,移除,旋转后退并看到崩溃警报。

P.P.P.S:不知道为什么null super.onCreate(),但无论如何这个活动没有代码来支持已保存的状态。

0 个答案:

没有答案