首页 文章

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

提问于
浏览
0

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

login_activity 在用户登录后完成. main_activity 显示项目(从服务器接收) . 当用户单击 main_activity ListView中的项目时,会显示新的 item_details_activitymain_activity 未完成(为了让用户按下BACK按钮并返回 main_activity ) .

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

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

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

3 回答

  • 0

    你可以尝试:

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

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

  • 0

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

  • 2

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

    要么

    startActivity login_activity OnBackpressed() OnBackpressed() item_details_activity

相关问题