3

我有一个带有列表视图的简单应用程序。当用户点击列表项时,我开始一个新活动

Intent eventdetails = new Intent(HomeActivity.this,EventDetailsActivity.class);
eventdetails.putExtra("eventId", ev.getId());
eventdetails.putExtra("eventDate", ev.getEnglishDate());
startActivity(eventdetails);

一旦 EventDetailsActivity 启动,HomeActivity 就会被销毁(调用 onDestroy)。当用户从 EventDetailsActivity 中点击后退按钮时,会重新创建 HomeActivity,这是我不想要的。

我一直无法弄清楚为什么 HomeActivity 首先被杀死。我也使用 udb 检查了活动堆栈,它没有显示 HomeActivity

Running activities (most recent first):
Run #0: ActivityRecord{43938cc8 com.app.event/.EventDetailsActivity}

这仅在三星 Galaxy Note 2 上发生

知道为什么会这样吗?

4

4 回答 4

7

这将在用户启用此设置时发生

转到设置-> 开发人员选项

在 APPS 类别中(向下滚动查看),查看选项
不要保留活动(用户离开后立即销毁每个活动)。

看这个选项是否被选中

于 2013-12-02T10:01:35.433 回答
3
Intent eventdetails = new Intent(HomeActivity.this,EventDetailsActivity.class);
eventdetails.putExtra("eventId", ev.getId());
eventdetails.putExtra("eventDate", ev.getEnglishDate());
eventdetails.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
eventdetails.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(eventdetails);
HomeActivity.this.finish();

试试这个代码让我知道它是否对你有帮助

于 2013-12-02T10:00:50.483 回答
2

也许这对某人有用 - 在我的情况下,问题是父活动是在清单中定义的

android:noHistory="true"

使用此设置,一旦打开新活动,它就会被杀死。请参阅android:noHistory="true" 是如何工作的?

于 2018-03-20T15:12:08.083 回答
0

这是因为android管理发布活动的过程,如果你想完成之前的活动,那么在开始活动后添加:

HomeActivity.this.finish();

要么你可以使用标志来清除以前的活动

eventdetails.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
eventdetails.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

或两者:

Intent eventdetails = new Intent(HomeActivity.this,EventDetailsActivity.class);
eventdetails.putExtra("eventId", ev.getId());
eventdetails.putExtra("eventDate", ev.getEnglishDate());
eventdetails.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
eventdetails.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(eventdetails);
HomeActivity.this.finish();

希望它有助于解决问题。

于 2013-12-02T10:12:16.467 回答