我有三项活动。我想做这样的事情:
-> on按钮按-> B ->按下按钮-> (销毁A,B)创建C
一切正常,但我在Android的日志中注意到了一些“奇怪”的行为。
当我按下活动A的按钮时,这个操作就完成了:
I/System.out: The A Activity is onStart.
I/System.out: The A Activity is onResume.
I/System.out: The A Activity is onPause.
I/System.out: The B Activity is onResume.
I/System.out: The A Activity is stopped.
然后,我再次按下活动B的按钮:
I/System.out: The B Activity is paused.
I/System.out: The B Activity is stopped.
我输入活动C,但是控制台上没有写活动A和B被销毁,即使我在活动B中调用了方法finish()。
只是,当我在活动C中按后退按钮时,就会执行这个操作。
I/System.out: The B Activity is destroyed.
I/System.out: The A Activity is destroyed.
我会自动退出应用程序。
我的问题是:为什么当我按下活动B?上的按钮时没有触发它?
B级:
startActivity(new Intent(this, C.class));
B中途停车:
@Override
protected void onStop() {
Intent returnIntent = getIntent();
setResult(Activity.RESULT_CANCELED, returnIntent);
finish();
super.onStop();
System.out.println("The B Activity is stopped.");
}
一堂课:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1){
finish();
}
}
编辑:
另一件奇怪的事情是,当我按下活动B中的按钮时,我进入活动C,然后执行活动B onStop。
但是:
何时触发setResult()?与onDestroy()一起?
编辑2
如果你读到这些评论,就会发现另一个有趣的问题。
为什么当finish()从onStop()调用时不调用onStop()方法?;当finish()方法退出onStop()时,通常会调用onDestroy()。
这是正常的[按设计的]吗?
发布于 2016-03-13 21:43:28
发布于 2016-03-14 00:37:41
关于您的“编辑2",当您离开屏幕直到屏幕变黑,或者您只需按”关闭按钮“关闭屏幕时,onDestroy()实际上就会被调用。
正如@Henning Luther所提到的,答案可能是在Android的某个地方,并且可能也与表面和其他事物有关。
如果我将finish()从onStop()中删除,它通常会被销毁。
*这不是一个完整的回答,但由于我不能发表评论,我就这样做了,所以想分享一下
发布于 2022-12-02 18:15:56
我还遇到了一些问题,我发现在调用活动onDestroy的finish之后,还在未调用的地方调用了侦听器ActivityLifecycleCallbacks.onActivityDestroyed
。如何--当我签出文档时,它们看起来应该在哪里:
Activity.onDestory文档显示:
在活动被销毁之前执行任何最后的清理。这可能是因为活动正在完成(有人在其上调用finish() ),或者因为系统正在临时销毁该活动的这个实例,以节省空间。您可以使用isFinishing()方法区分这两种场景..。
但我发现isFinishing也不是真的。
我的解决方案是简单地使用依赖活动onDestroy的代码等待,使用运行在主线程上的:Handler.postDelayed
来调用这些代码,还可以使用执行相同操作的视图post(Runnable action)
。
https://stackoverflow.com/questions/35972726
复制相似问题