我发出了一个action
的通知,该通知会打开 mainactivity 。这是第一次调用活动,创建并且一切正常。暂停活动后,我会自动调用活动的 onDestroy(),并且会成功销毁。但是,当我第二次单击该通知时,会出现FATAL EXCEPTION: main can't resume activity
错误。如果活动被破坏,我没想到它会被恢复,但又重新创建......为什么会发生这种情况?如何通过这些方法强制重建活动?
答案 0 :(得分:0)
不要直接调用onDestroy()
这些是系统应该调用的生命周期方法。您遇到的问题是系统仍然认为活动已暂停(而不是像您希望的那样被销毁),因为它从未被通知过。毫无疑问,你在onDestroy()方法中调用了super.onDestroy()
(正确的东西),导致部分活动自我清理,使其不可恢复。当系统绕过它认为暂停的活动时,会抛出该错误。
幸运的是,有很多方法可以通过名为finish()
的方法告诉系统在您需要时终止您的活动。
Android文档:
在您的活动完成后调用此选项并应关闭。 ActivityResult会传播回通过onActivityResult()启动你的人。
使用此调用替换您对onDestroy()的调用,以解决您的问题。
永远不要直接调用生命周期方法!