我在我的Android应用程序中有下一个导航: login_activity
- > main_activity
- > item_details_activity
login_activity
在用户登录后完成. main_activity
显示项目(从服务器接收) . 当用户单击 main_activity
ListView中的项目时,会显示新的 item_details_activity
但 main_activity
未完成(为了让用户按下BACK按钮并返回 main_activity
) .
问题是会话可能会过期(登录时收到令牌),并且我在 item_details_activity
中有服务器异常 . 然后我必须完成堆栈中的所有活动活动( item_details_activity
和 main_activity
)并运行没有历史记录的 login_activity
.
我如何完成堆栈中的所有活动活动?
恕我直言,设置全局 session_expired
标志并在堆栈中的所有可能活动活动中检查它是不是一个好主意 .
3 回答
你可以尝试:
一旦活动不在堆栈中,它们将由android运行时自动删除 .
Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK
在某些情况下不起作用 . 最好的方法是使用BroadcastReceiver
. 您可以在启动时注册活动,并在活动销毁时取消注册 . 如果要清除所有内容,只需广播消息即可清除所有已注册的活动 .检查
main_activity
的onResume()
中的会话标志,如果是session_expired
,则使用intent.flag_activity_clear_top
标志检查startActivitylogin_activity
.要么
startActivity
login_activity
OnBackpressed()
OnBackpressed()
item_details_activity