繁体   English   中英

有没有办法重新启动应用程序,而不是让它在崩溃后重新启动上一个活动?

[英]Is there a way to restart the application instead of having it restart the last activity after a crash?

因为我在Application类中存储了某些必要的信息,所以当用户遇到崩溃时,有时他们会遇到两次崩溃,因为上一个活动需要在应用程序类中存储信息。

活动A >>活动B(需要来自应用程序类的信息)>>活动C

C发生崩溃>>应用程序尝试打开活动B >> B发生崩溃,因为它需要Application类的信息(已重置)

我想避免这种情况,所以我希望可以以某种方式在崩溃后重新启动整个应用程序,而不是重新启动活动。

这是许多解决方案中的一种,但我将其作为一种选择:

您可以使用startActivityForResult()并在活动C中处理错误时,使用可以识别为崩溃的结果代码finish()finish() ,并在活动B的onActivityResult()中适当地处理事情。

从活动中获取结果

最好的解决方案是处理在任何活动(活动B)中都没有必要信息的情况。

您应该检查onCreate方法是否具有信息,并采取行动:

  • 完成活动以返回到活动A
  • 发起另一项活动
  • 要求用户提供反馈
  • 您认为最合适的任何其他操作

解释为什么您没有该信息的原因可能有多个(正如其他答案所指出的那样),所以我认为最好的选择是处理此案。

未经检验的理论,只是吐口水。

您能否将自己附加为默认的异常处理程序,并开始在开放活动中调用finish() 如果您可以完成所有活动,那么就不能有效地关闭该应用程序,而重新打开该应用程序就像是在重新启动它一样吗?

您不应该在Application对象中保留任何状态。 将其保存在您在onCreate()中收到的捆绑软件中。 最终使用onSaveInstanceState / onRestoreInstanceState来保存/恢复状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM