【问题标题】:How can I finish "group" of Activities?我怎样才能完成“组”活动?
【发布时间】:2019-05-17 14:58:44
【问题描述】:

我的 Android 应用中有一项操作,其中包括一些活动。在此操作结束时,我需要关闭所有这些活动并返回开始此操作的屏幕。下面是一个解释这应该如何工作的图表。有什么选择吗?

P/S/ Fragments 在我的情况下不是一个选项

【问题讨论】:

  • 你可以使用startActivityForResults的链。或者使用片段。或者至少是任何不是 Activity 链的东西。

标签: android android-activity


【解决方案1】:

有很多方法可以做到这一点。很快他们是:
1。使用startActivityOnResult() 方法开始您的所有活动。如果您需要关闭它们,请抓住它们
2。开始 Activity_1 并清理当前的后台堆栈:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent);
finish(); 


3.位于流程内部的活动。您可以在 AndroidManifest 中为您的活动 (3,4,5) 定义另一个流程。之后,您需要返回上一个进程并从 backStack 中删除当前进程。

【讨论】:

  • 第一个选项听起来很有趣,它确实可以提供帮助。第二个现在是不可能的,因为我不知道哪个活动开始了操作。
  • 类似于我已经尝试过的第三个选项。我使用标志 FLAG_ACTIVITY_NEW_TASK 运行了我的第一个操作活动,但有时(如果在新任务中运行活动的应用程序在后台)我之前的任务在我关闭操作任务时已经关闭。因此,当用户在最后一个操作活动上按下 OK 时,应用程序就会关闭。
【解决方案2】:

您可以使用flag=Intent.FLAG_ACTIVITY_CLEAR_TASK 完成一组活动。
这是代码示例

startActivity(new Intent(SignIn.this, MainActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK));

【讨论】:

  • 是的,但是我不知道我需要返回哪个Activity,因为我不知道我的操作启动了什么Activity
【解决方案3】:

您可以使用flag=Intent.FLAG_ACTIVITY_CLEAR_TASK 清除所有以前的活动。该标志用于清除所有以前的活动。

试试这个代码

 //  go to login activity

Intent intent =newIntent(AddNewCardActivity.this,HomeNavigationActivity.class);
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(intent);
            finish();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-14
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 2011-11-06
    • 2014-09-25
    • 1970-01-01
    相关资源
    最近更新 更多