如果新的Intent与启动应用程序的初始Intent相同,则阻止Android系统继续执行任务

幸运的是Suryono

这个问题与深层链接有关。例如,我在我的应用程序,即四项活动MainActivityFirstActivitySecondActivity,和DeepLinkActivity这是清单文件中的活动。

<activity android:name=".MainActivity">
    <intent-filter>
       <action android:name="android.intent.action.MAIN" />
       <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<activity android:name=".FirstActivity" />
<activity android:name=".SecondActivity" />
<activity android:name=".DeepLinkActivity"
    android:theme="@android:style/Theme.NoDisplay">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="launch" />
    </intent-filter>
</activity>

DeepLinkActivity将推出是否FirstActivitySecondActivityMainActivity取决于URI收到的:

public class DeepLinkActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        launchIntent(getIntent());
    }

    private void launchIntent(Intent intent) {
        Intent newIntent = null;

        switch (intent.getData().getHost()) {
            case "first":
                newIntent = new Intent(this, FirstActivity.class);
                break;
            case "second":
                newIntent = new Intent(this, SecondActivity.class);
                break;
            default:
                newIntent = new Intent(this, MainActivity.class);
                break;
        }

        startActivity(newIntent);
        finish();
    }
}

问题是,Android系统似乎录制推出了应用程序的初步意向,然后用它来恢复任何活动的前景正在运行-if-新的意图是初步意向是相同的。

考虑以下情况:

  1. 用户单击launch://first深层链接→FirstActivity即会打开。
  2. 用户最小化应用程序,然后单击launch://secondSecondActivity在顶部打开FirstActivity
  3. 用户再次最小化该应用程序,然后单击launch://first

在执行完第3步之后,我期望的是OS处于打开状态FirstActivity但是实际上它可以继续执行任务,因此SecondActivity(从第2步开始)重新出现。发生这种情况是因为步骤1和3上的深层链接相同,因此操作系统将它们视为相同的Intent。

在这种情况下,如何防止Android系统继续执行任务?

幸运的是Suryono

经过一些试验,这就是我要使其正常工作的方法。

newIntent在开始之前设置标志

newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

但是,仅设置标志并不能完成工作,该应用仍将恢复到上一个​​活动。然后我将launchMode添加到DeepLinkActivity

<activity android:name=".DeepLinkActivity"
    android:theme="@android:style/Theme.NoDisplay"
    android:launchMode="singleTask">

现在,该应用程序已重新启动,并打开了预期的活动!注意,launchMode也可以singleInstance是。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果新的Intent与启动应用程序的初始Intent相同,则阻止Android系统继续执行任务

来自分类Dev

在应用程序启动时永远在后台执行任务-Android

来自分类Dev

在WPF应用程序中在后台执行任务

来自分类Dev

在Android上将Chrome最小化时,Web应用程序可以执行任务吗?

来自分类Dev

如果我的应用程序已经具有焦点,如何检测新的Intent?

来自分类Dev

在启动 Android 应用程序之前,要在共享 Intent 的正文中添加什么?

来自分类Dev

如何使用 Intent 在 Android TV 上启动 amazon prime 视频应用程序

来自分类Dev

如果已经运行,如何阻止粘性应用程序启动新实例?

来自分类Dev

没有应用程序可以使用 Kotlin 执行此操作 Android Intent

来自分类Dev

如果任何任务失败,则执行任务(或处理程序)

来自分类Dev

在iOS 8中应用程序处于后台状态时如何连续执行任务

来自分类Dev

nodejs应用程序如何在特定时间可靠地执行任务?

来自分类Dev

Android Intent使我的应用程序崩溃,为什么?

来自分类Dev

从Web Intent返回,Android相机应用程序停止

来自分类Dev

使用自己的ThreadPool继续执行任务

来自分类Dev

使用自己的ThreadPool继续执行任务

来自分类Dev

阻止用户使用任务切换器结束我的Android启动器应用程序

来自分类Dev

使用 Intent 时应用程序崩溃

来自分类Dev

传递 Intent 时应用程序崩溃

来自分类Dev

每当另一个应用程序中发生事件时,是否可以执行任务?

来自分类Dev

每当另一个应用程序中发生事件时,是否可以执行任务?

来自分类Dev

JavaFx启动应用程序并继续

来自分类Dev

当从Intent.createChooser()启动应用程序/活动时,如何防止应用程序/活动的多个实例?

来自分类Dev

任务应用程序:proguardRelease的Android执行失败

来自分类Dev

从RecyclerViewAdapter启动新的Intent

来自分类Dev

Android应用程序的初始启动时间较慢

来自分类Dev

通过setClassName在Android中使用相同的包启动一个新的Intent

来自分类Dev

Android:在两个应用程序之间传递明确的Uri Intent(未找到可处理Intent的活动)

来自分类Dev

QProcess:执行阻止整个应用程序

Related 相关文章

  1. 1

    如果新的Intent与启动应用程序的初始Intent相同,则阻止Android系统继续执行任务

  2. 2

    在应用程序启动时永远在后台执行任务-Android

  3. 3

    在WPF应用程序中在后台执行任务

  4. 4

    在Android上将Chrome最小化时,Web应用程序可以执行任务吗?

  5. 5

    如果我的应用程序已经具有焦点,如何检测新的Intent?

  6. 6

    在启动 Android 应用程序之前,要在共享 Intent 的正文中添加什么?

  7. 7

    如何使用 Intent 在 Android TV 上启动 amazon prime 视频应用程序

  8. 8

    如果已经运行,如何阻止粘性应用程序启动新实例?

  9. 9

    没有应用程序可以使用 Kotlin 执行此操作 Android Intent

  10. 10

    如果任何任务失败,则执行任务(或处理程序)

  11. 11

    在iOS 8中应用程序处于后台状态时如何连续执行任务

  12. 12

    nodejs应用程序如何在特定时间可靠地执行任务?

  13. 13

    Android Intent使我的应用程序崩溃,为什么?

  14. 14

    从Web Intent返回,Android相机应用程序停止

  15. 15

    使用自己的ThreadPool继续执行任务

  16. 16

    使用自己的ThreadPool继续执行任务

  17. 17

    阻止用户使用任务切换器结束我的Android启动器应用程序

  18. 18

    使用 Intent 时应用程序崩溃

  19. 19

    传递 Intent 时应用程序崩溃

  20. 20

    每当另一个应用程序中发生事件时,是否可以执行任务?

  21. 21

    每当另一个应用程序中发生事件时,是否可以执行任务?

  22. 22

    JavaFx启动应用程序并继续

  23. 23

    当从Intent.createChooser()启动应用程序/活动时,如何防止应用程序/活动的多个实例?

  24. 24

    任务应用程序:proguardRelease的Android执行失败

  25. 25

    从RecyclerViewAdapter启动新的Intent

  26. 26

    Android应用程序的初始启动时间较慢

  27. 27

    通过setClassName在Android中使用相同的包启动一个新的Intent

  28. 28

    Android:在两个应用程序之间传递明确的Uri Intent(未找到可处理Intent的活动)

  29. 29

    QProcess:执行阻止整个应用程序

热门标签

归档