【问题标题】:How to ignore the launcheMode of "SingleTask" when starting an Activity?启动Activity时如何忽略“SingleTask”的launcheMode?
【发布时间】:2018-02-27 16:30:43
【问题描述】:

B 的启动模式为“SingleTask”的三个 Activity。我想知道如何在使用 C 时启动新 B 而不是重新启动旧 B?

【问题讨论】:

    标签: android launchmode


    【解决方案1】:

    不幸的是,如果清单中的 Activity B 设置为使用android:launchMode="singleTask",则(据我所知)无法覆盖它。

    但是,当您想要singleTask 行为时,您可以从清单中删除此属性并使用类似这样的代码:

    Intent intent = new Intent(this, ActivityB.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    

    最终结果是当你想要它时你得到singleTask 行为,而当你不想要它时你得不到它。你只需要改变策略。

    【讨论】:

      【解决方案2】:

      在活动的onBack press方法中使用以下代码

          @Override
          public void onBackPressed() {
          Intent BackpressedIntent = new Intent();
          BackpressedIntent .setClass(getApplicationContext(),B.class);
          BackpressedIntent .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
          startActivity(BackpressedIntent );
          finish();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-28
        • 2018-08-25
        • 1970-01-01
        相关资源
        最近更新 更多