将 Activity 恢复到 Android 顶部

问题描述 投票:0回答:1

我使用“Single_instance”启动模式开发Android应用程序。我想从我的活动运行外部应用程序,并将我的活动带回屏幕。我正在使用 Intent.startActivity 来运行应用程序,但我无法自动返回到我的活动,并保持外部应用程序在后台运行。有什么方法可以使用一些标志来实现这一目标吗?

我尝试使用 FLAG_ACTIVITY_PREVIOUS_IS_TOP 和 Intent.FLAG_ACTIVITY_NEW_TASK 或 Intent.FLAG_ACTIVITY_CLEAR_TOP 来运行外部应用程序并将其放入后台,但我的应用程序不会返回顶部。

android kotlin android-intent flags
1个回答
0
投票

为此,您需要执行以下操作:

  • 使用
    startActivity()
    启动外部应用程序。这会将外部应用程序放在您的应用程序前面。
  • 启动某种计时器(将延迟的
    Runnable
    发布到
    Handler
    或使用
    AlarmManager
    或类似的东西),该计时器将等待一段时间,足以让外部应用程序有机会启动并覆盖您的应用程序.
  • 当计时器到期时,它应该向您创建的
    Intent
    发送本地广播
    BroadcastReceiver
  • 然后,
    BroadcastReceiver
    应该通过“启动
    startActivity()
    ”来调用
    Intent
    (您可以通过为您的应用程序调用
    PackageManager.getLaunchIntentForPackage()
    来获得一个。这应该使您的应用程序以任何状态返回到前台。

我发现,只有当您从

startActivity()
BroadcastReceiver
Service
调用
Context
,并且从 Activity
Context
调用
not
时,这才有效(这就是为什么需要额外的步骤来涉及
BroadcastReceiver
。参见。https://stackoverflow.com/a/29769255/769265以及评论线程以获取有关此问题的更多信息。

在现代 Android 版本中可能存在问题,因为对后台运行的代码如何/何时启动活动有严格的限制(这是为了防止后台进程干扰用户)。如果这不起作用,您可能根本无法做到。

我随口写下了这句话,希望大家能够理解。

© www.soinside.com 2019 - 2024. All rights reserved.