2012-04-12 57 views
3

对于我不想保留在后退堆栈中的活动,我使用属性noHistory = true。它在Android 2.3.3上工作正常,但在4.0.3上有一个奇怪的行为。 当屏幕进入睡眠状态并将其唤醒时,noHistory = true的活动消失了!Android 4.0.3中的noHistory属性不一致

这是怎么回事?屏幕醒来后活动是否完成?我以错误的方式使用历史吗?

回答

2

我只是有同样的问题今天,我发现这里的解决方案:

Android: how to return to Activity with "noHistory" attribute after onStop?

事实上,noHistory设置为true,当屏幕进入睡眠状态,你的活动是从去除该堆栈,并且在屏幕醒来时不会恢复。

我删除noHistory =从布局XML文件真实,只是叫光洁度()时,我的活动调用另一个问题:

Intent intent = new Intent(); 
intent.setClass(this, MainActivity.class); 
this.startActivity(intent); 
finish(); 

这使的伎俩!当我点击后退按钮时,以前的活动不会出现。

我不知道是否发生在Android 2.x的问题,但我很肯定是可以正常使用现在同时在Android版本2.x和Android 4.x版

+0

这就是我结束了这样做。我仍然不理解4.x上的这种行为。当屏幕进入睡眠状态时,没有理由从堆栈中移除活动。 – 2012-04-15 08:55:15

+0

当屏幕关闭时,活动暂停。我在Android 4.x中观察到的是,在那之后,系统要求完成活动(调用onDestroy()方法)。活动结束后,Android会将其从堆栈中移除。 – 2012-04-15 12:08:09

+0

我之前的评论是不完整的:当屏幕关闭时,活动暂停。我在Android 4.x下观察到的是,在它之后很快,系统要求完成活动(调用onDestroy()方法)。活动结束后,Android会将其从堆栈中移除,这一点很正常。所以问题是:为什么活动被破坏?在我看来,Android 4.x对于暂停的活动更加“积极”,并且迅速杀死它们以恢复内存。 – 2012-04-15 12:17:32

0

可能与屏幕进入睡眠状态时调用onPause()有关。