【问题标题】:Android Back button behaves unpredictably on Activity started from IntentAndroid 后退按钮在从 Intent 启动的 Activity 上的行为不可预测
【发布时间】:2016-06-12 19:02:46
【问题描述】:

在我的应用程序中,我有 3 个活动:

  • MainActivity,这是启动应用程序时出现的主屏幕
  • SettingsActivity,从MainActivity开始
  • DownloadActivity,从SettingsActivity开始。

DownloadActivity 提供应用内内容列表供用户下载。实际下载由 Android 的 DownloadManager 处理,它会显示正在进行的下载通知。点击该通知会触发一个意图,将用户带到DownloadActivity

现在,如果我执行以下操作:

  1. 启动应用程序,转到SettingsActivity,从那里转到DownloadActivity

  2. 开始下载,然后按两次返回返回MainActivity

  3. 下拉通知并点击下载通知,我会回到DownloadActivity

  4. 反击。

  5. 重复步骤 3 和 4 两次。

第一次执行第 4 步时,“后退”按钮会将我直接从 DownloadActivity 带到 MainActivity——在我点击通知之前应用显示的最后一个活动,这正是我想要的。

然而,第二次后退按钮会在当前按钮下方显示第二个DownloadActivity,我需要再次点击后退才能回到MainActivity

第三次,有 4 个DownloadActivity 实例的堆栈,需要按四次Back 按钮才能返回MainActivity

处理水龙头的代码如下:

Intent downloadIntent = new Intent(activity.getApplicationContext(), downloadActivity.class);
downloadIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
activity.getApplicationContext().startActivity(downloadIntent);

activity 是对启动下载的活动的引用。)

是什么导致了这种奇怪的行为,我怎样才能让后退按钮总是返回到应用程序显示的最后一个活动?

【问题讨论】:

    标签: android android-intent android-activity back


    【解决方案1】:

    结果证明这很容易。这种改变起到了作用:

    - downloadIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
    + downloadIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
    

    【讨论】:

      猜你喜欢
      • 2013-01-17
      • 1970-01-01
      • 1970-01-01
      • 2014-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多