在阅读关于这个话题的所有关于SO的问题之后,我对此非常恼火。有什么方法可以改变崩溃后Android重新开始活动的行为
崩溃会发生,没有人写完美的代码。有些应用程序需要特定的逻辑层次结构。最好的例子是登录屏幕的想法,你在某些活动中在服务器上做某些事情,现在应用程序崩溃。重新启动后,该应用程序会丢失其所有登录会话数据并将其保存起来可能不是最安全的想法。因此,在崩溃后向用户呈现登录屏幕将是最好也是最合乎逻辑的事情。最好的用户体验。
但是,Android决定记住活动堆栈,但只能在其下面的“空白”应用程序中重新启动上次工作活动。 我看到的唯一可行的选择是检查每个单个活动,如果某些登录状态可用或不可用,并且如果没有,则使用clear-top或clear-task启动登录(启动器)活动。但是这几乎迫使你编写一个基类extends Activity
这个行为被实现,然后所有的活动必须扩展它。但是,如果由于某种原因,你不能扩展它,因为你需要扩展一些其他类型的活动?
有android:clearTaskOnLaunch
,但每当用户通过主页按钮退出时都会发生这种情况。每当用户按下主页按钮时,都会有一个对手finishOnTaskLaunch
完成一项活动。所以Android开发者意识到,有时候人们会希望应用程序在退出后以某种状态出现,但崩溃似乎是所有这些特有的。
使用自定义UncaughtExceptionHandler
为我提供了一些在崩溃后采取行动的机会,但由于应用程序状态是不可恢复的,我只能执行除了Android自己的行为之外还会发生的某些任务。
所以我的一个简单问题是,如果有任何方法,它是内置于Android中的,这使我可以以一种自然的方式更改Android的故障后行为,而不依赖于它运行的版本在一定程度上c),并且会导致用户体验稍微平滑。
这并没有改变用户登录空白应用程序的事实,因为这些活动从未执行(在这个新进程中),没有会话/登录等,所以某些事情从未发生过。 – NikkyD