代码之家  ›  专栏  ›  技术社区  ›  Peterdk

安卓:当应用程序被终止时,如何设置新启动的入口点?

  •  0
  • Peterdk  · 技术社区  · 14 年前

    我使用一个只包含静态字段的单独类来存储当前应用程序数据。 部分人口来自 sharedpreferences 应用程序启动时。其余的是一些操作的类似数据的结果,用于进一步浏览这些结果(使用结果的多个活动)。

    我可以转到主屏幕,启动其他应用程序等,当我返回到自己的应用程序时,它就正常工作了。

    然而,自从新的 Error Reporting 我得到的一些错误报告都与 nullreference 错误。对象是 null 是对上述单独类中静态字段的引用。

    由于我无法重现这个bug,我倾向于认为这是由于应用程序由于内存不足而被杀死,当它重新启动时,会调用 oncreate 来自用户当前所在的活动。但是,单独类中的所有静态数据都不会恢复,因此会崩溃。

    我想知道:有没有一种方法可以强制应用程序完全“重新启动”,如果最后使用的活动被杀死,就不从它开始?或者这是标准行为? 我可以用程序实现吗?就像当静态字段为空时,重新启动应用程序?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Steve Haley    14 年前

    重新启动用户所处的活动是正常行为——其目的是让用户觉得应用程序从未关闭过。你可以看到两件事:

    protected void onSaveInstanceState(Bundle outState){
        // This gets called by the system when it's about to kill your app
        // Put all your data in the outState bundle
    }
    

    该包与在中传递给活动的包相同。 onCreate() . 然后您可以从中获取任何必要的信息,并恢复静态类中的值。

    另一种方法是简单地检查 onResume() 任何活动的方法。如果这些值为空或以某种方式出现错误,则可以调用Start the Original Activity和 finish() 正在启动的。