android父活动在startActivity上被杀死

时间:2013-12-02 09:54:18

标签: android activity-stack

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

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 个答案:

答案 0 :(得分:7)

当用户启用此设置时会发生这种情况

goto settings->开发者选项

在APPS类别中(向下滚动查看),请参阅选项
不要保留活动(一旦用户离开就销毁每个活动)。

是否选择此选项

答案 1 :(得分: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();

试试这段代码 如果有帮助,请告诉我

答案 2 :(得分: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();

希望它有助于解决问题。

答案 3 :(得分:0)

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

android:noHistory="true"

使用此设置,一旦新活动打开,它就会被杀死。 见How does android:noHistory="true" work?