Android 按下后退按钮后,不会调用OnDestroy
我正试图在我的活动中添加清理代码。调用create函数,但按下back按钮时,我在stroy上设置的制动点永远不会消失 代码:Android 按下后退按钮后,不会调用OnDestroy,android,Android,我正试图在我的活动中添加清理代码。调用create函数,但按下back按钮时,我在stroy上设置的制动点永远不会消失 代码: 这是因为当按下后退按钮时,onDestroy不一定被调用,只有当活动被Android破坏并且仍然不能保证进入onDestroy时才会被调用。更好的选择是将清理代码放在onStop()中 此外,您实际上不需要@覆盖,但需要super.onDestroy()以使其表现为生命周期事件。这是因为当按下“后退”按钮时,不一定会调用onDestroy,只有当活动被Android破坏
这是因为当按下后退按钮时,
onDestroy
不一定被调用,只有当活动被Android破坏并且仍然不能保证进入onDestroy
时才会被调用。更好的选择是将清理代码放在onStop()中
此外,您实际上不需要@覆盖
,但需要super.onDestroy()代码>以使其表现为生命周期事件。这是因为当按下“后退”按钮时,不一定会调用onDestroy
,只有当活动被Android破坏并且仍然不能保证进入onDestroy
时才会调用。更好的选择是将清理代码放在onStop()中
此外,您实际上不需要@覆盖
,但需要super.onDestroy()代码>以使其表现为生命周期事件。我并不感到惊讶<按“上一步”按钮时,不会自动调用代码>onDestroy()
。通常是这样,需要回收一些内存。您应该查看的是onPause
或onStop
为了更清楚地说明何时调用了ondestory
,请查看。如果某个活动部分隐藏,则该活动暂停;如果该活动完全隐藏,则该活动停止,例如,按下“上一步”按钮onStop
可以演变为对onDestroy
的调用,但不一定如此 我并不感到惊讶<按“上一步”按钮时,不会自动调用代码>onDestroy()
。通常是这样,需要回收一些内存。您应该查看的是onPause
或onStop
为了更清楚地说明何时调用了ondestory
,请查看。如果某个活动部分隐藏,则该活动暂停;如果该活动完全隐藏,则该活动停止,例如,按下“上一步”按钮onStop
可以演变为对onDestroy
的调用,但不一定如此 按“上一步”后,您的活动暂停,然后停止。请参见此处的“活动生命周期”:按“上一步”后,您的活动将暂停,然后停止。让我们在此处查看活动生命周期:您有这个
public class cPuzzle extends cBase {
您的类不扩展活动
onDestory()
是一种活动生命周期方法
protectedvoid onDestroy()
在销毁活动之前执行任何最终清理
注意:不要指望调用此方法作为保存数据的位置!例如,如果活动正在编辑内容提供程序中的数据,则这些编辑应在onPause()或onSaveInstanceState(捆绑包)中提交,而不是在此处提交
当用户按下后退按钮时,当前活动
从堆栈顶部弹出(该活动已被销毁
),并且上一个活动恢复
(其UI的上一个状态恢复)
如果您希望进行清理,请在暂停时进行清理
public class cPuzzle extends cBase {
您的类不扩展活动
onDestory()
是一种活动生命周期方法
protectedvoid onDestroy()
在销毁活动之前执行任何最终清理
注意:不要指望调用此方法作为保存数据的位置!例如,如果活动正在编辑内容提供程序中的数据,则这些编辑应在onPause()或onSaveInstanceState(捆绑包)中提交,而不是在此处提交
当用户按下后退按钮时,当前活动
从堆栈顶部弹出(该活动已被销毁
),并且上一个活动恢复
(其UI的上一个状态恢复)
如果您希望进行清理,请在onPause
中进行清理。您的onestory
应定义为
protected void onDestroy() { ... }
而不是
void OnDestroy() { ... }
Java是区分大小写的语言。您的onDestroy
应定义为
protected void onDestroy() { ... }
而不是
void OnDestroy() { ... }
Java是区分大小写的语言。难道你忘了@Override注释吗?onBackPressed
调用方法finish()
?什么是cBase
中的cPuzzle扩展了cBase{
?你应该扩展活动没有什么比关于生命周期方法和堆栈的热烈讨论更让我兴奋的了你忘了@Override注解吗?onBackPressed
调用方法finish()
?在公共类cPuzzle扩展cBase中cBase
是什么{
?你应该扩展活动没有什么比关于生命周期方法和堆栈的热烈讨论更让我兴奋的了grrrrrrrrrrrri相信当你按下Backback按钮时,活动会从Backback中弹出并被销毁。以前的活动需要关注我读过和经历过的所有东西都会说相反的话。即使是文档也说不完全依赖于我认为onDestroy正在被调用。如果您不确定您可以在onDestroy中暂停并停止记录消息,以检查onDestroy是否得到了响应called@Raghunandan我已经阅读了您所指的内容,但没有解释。Back将隐藏和activity,这将调用onStop
,并有机会稍后恢复。如果不恢复,则将e已销毁。@Raghunandan生命周期方法是根据用户界面的状态调用的。用户界面是隐藏的还是可见的是调用的onPause
或onStop
。它不一定与“后退”按钮有关。如果禁止“后退”执行其他功能,则可能不会调用生命周期方法。我相信n按Backback按钮时,将从Backback弹出活动。上一个活动已销毁