如何完成堆栈中的所有活动并运行没有堆叠历史记录的新活动?

时间:2014-05-29 07:37:20

标签: android user-interface

我的Android应用程序中有下一个导航: login_activity - > main_activity - > item_details_activity

用户登录后

login_activity完成。 main_activity显示项目(从服务器收到)。当用户点击main_activity ListView中的项目时,会显示新的item_details_activity,但main_activity未完成(为了让用户按下BACK按钮并返回main_activity)。< / p>

问题是会话可能会过期(登录时收到的令牌),我在item_details_activity中有服务器异常。然后我必须完成堆栈中的所有活动活动(item_details_activitymain_activity)并运行没有历史记录的login_activity

如何完成堆叠中的所有活动活动?

恕我直言,设置全局session_expired标志并在堆栈中所有可能的活动中检查它是不是一个好主意。

3 个答案:

答案 0 :(得分:2)

您可以尝试:

Intent in = new Intent(getBaseContext(), HomeActivity.class);
in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(in);

一旦活动不在堆栈中,它们将由android运行时自动删除。

答案 1 :(得分:0)

检查onResume() main_activity中的会话标记,如果是session_expired,则使用login_activity标记检查startActivity intent.flag_activity_clear_top

startActivity

中的login_activity intent.flag_activity_clear_top OnBackpressed() item_details_activity {/ 1}}

答案 2 :(得分:0)

Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK在某些情况下不起作用。最好的方法是使用BroadcastReceiver。您可以在启动时注册活动,并在活动销毁时取消注册。如果要清除所有内容,只需广播消息即可清除所有已注册的活动。