我的应用程序在暂停一段时间后以及在onRestoreInstanceState之后崩溃



好吧,伙计们,我真的需要一些帮助。我有一个发布的应用程序Auto Inspection,在我的Droid 4上,在现实世界中,按下手机上的物理主页按钮会暂停应用程序一段时间,当调用onRestoreInstanceState后,它会崩溃。我能想到的最多的是,我返回的片段有一个按钮"添加新车",当点击该按钮时,它会更新下一个片段,一旦点击该按钮,它就会崩溃。我认为这是因为第三个片段的片段状态丢失了。该应用程序在暂停一段时间之前始终运行良好。这是我的堆栈跟踪:

    java.lang.NullPointerException
at pete01507.AutoInspection.af.a(Unknown Source)
at pete01507.AutoInspection.MainActivity.a(Unknown Source)
at pete01507.AutoInspection.ae.onClick(Unknown Source)
at android.view.View.performClick(View.java:4106)
at android.view.View$PerformClick.run(View.java:17052)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5059)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
at dalvik.system.NativeStart.main(Native Method)

如有任何帮助,我们将不胜感激。感谢

这是onRestoreInstanceState:

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    Log.d(TAG, "onRestoreInstanceState");
    if (savedInstanceState == null) {
        Log.d(TAG, "Restore onSaveInstanceState was empty");
        car="";
        fresh=false;
    }else{
        Log.d(TAG, "Restore onSaveInstanceState else was not empty");
        car = (String) savedInstanceState.get("car");
        load();
        mViewPager.setCurrentItem(savedInstanceState.getInt("vp"));
    }
    }

这是onSaveInstanceState:

    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    Log.d(TAG, "onSaveInstanceState");
    if (car.equals("")){
        Log.d(TAG, "onSaveInstanceState car not loaded");
    } else {
        Log.d(TAG, "onSaveInstanceState car is loaded");
        savedInstanceState.putString("car", car);
        savedInstanceState.putInt("vp", mViewPager.getCurrentItem());
    }
    }

更新:我有一个ViewPager上有七个静态片段的MainActivity,该活动没有任何视图或页面,所以当应用程序启动时,第一个页面就是第一个片段。当点击"+新车"按钮时,我删除了对回调界面的所有调用,以更新第三个片段。该按钮位于第二个片段中。现在,该应用程序可以正常运行,但没有对片段#3进行更新。回调接口仍然会更新第一个片段,但不会更新第三个片段,因为某种原因,我还没有弄清楚,那是在应用程序被内存不足的安卓系统杀死后,你再点击应用程序使用它,第三个和其他片段就无法通过接口访问了。那么,我该如何恢复碎片呢?比如,当你第一次安装应用程序时,它启动了,或者这个应用程序有一个调用context.fining的退出按钮。按下退出按钮后,界面再次工作?

很遗憾,我不能发表评论,因为我对此不确定,但是!我记得我也遇到过类似的问题,这听起来很熟悉。所以我打开了我制作的一个应用程序的两三年前的源代码。我写了一条评论。

如果应用程序通过主页按钮进入后台,并且Android在RAM不足的情况下,它会杀死应用程序,但会保存活动堆栈和实例状态绑定。当应用程序再次打开时,它不会启动启动器活动,但活动堆栈上的最后一个活动,以及从其他活动传递给它的值将丢失。

那么,在您的某个活动中,您是否希望onCreate或其他调用getIntent()的地方的某些值不为null?

不确定,但我知道这会有多令人沮丧,所以我祝你好运,找到这个bug。

相关内容

  • 没有找到相关文章

最新更新