我有一个带有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上发生这种情况
知道为什么会这样吗?
答案 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?