如何获取最顶层活动的标识符?

2024-03-28

我有一个服务,当最顶层的 Activity 发生变化时,它的行为必须改变。假设,活动 A 处于活动状态,然后服务开始某种处理。当 Activity A 不再可见时,此处理必须停止:用户按下“后退”、“主页”或执行任何其他操作使 Activity A 不可见。此 Activity A 不得知道该服务——即,它不必明确通知该服务它即将消失。

简而言之,有没有办法:

  • 获取最顶层 Activity 的任何类型的标识(对象引用、类名、ID 等),
  • 当最上面的 Activity 发生变化时收到通知?

附:这听起来像是恶意软件行为,但事实并非如此!这是合法的用例!

编辑:活动不在我的应用程序中。它们可以是任何东西——浏览器、地图应用程序、设置等等。


这个顶部部分已经过时了。答案见底部。

我假设您指的是您自己的应用程序中的活动:

所有活动请致电onResume()当来到前台并且onPause()当离开前台时。只需用您的功能覆盖此方法(请务必调用super.onResume() and super.onPause()分别!)。

至于标识符,也许你可以让你的服务有一个静态方法,由进入前台的活动调用(在onResume()),提供对其自身、其类、某些任意 ID 等的引用。

参考:http://developer.android.com/reference/android/app/Activity.html http://developer.android.com/reference/android/app/Activity.html


Edit:

您可以通过以下方式访问顶级 Activity 的身份ActivityManager-> 运行任务 ->ComponentName。一定要申报<uses-permission android:name="android.permission.GET_TASKS" />在你的清单中。

Context context = someArbitraryContext;
ActivityManager am = (ActivityManager) context.
    getSystemService(Activity.ACTIVITY_SERVICE);
String packageName = am.getRunningTasks(1).get(0).topActivity.getPackageName();
String className = am.getRunningTasks(1).get(0).topActivity.getClassName();

至于获取通知,您可能只需每 x 毫秒检查一次最上面的 Activity。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取最顶层活动的标识符? 的相关文章

随机推荐

  • Python multiprocessing.Pool:AttributeError

    我在一个类中有一个方法 需要在循环中完成大量工作 我想将工作分散到我的所有核心上 我写了下面的代码 如果我使用正常的话 它可以工作map 但与pool map 返回错误 import multiprocessing pool multipr
  • IPython笔记本:如何重新加载特定Python文件中的所有模块?

    我在一个文件中定义了许多模块 并添加from myFile import 到我的 ipython 笔记本的第一行 以便我可以将它用作该笔记本中其他部分的依赖项 目前我的工作流程是 modify myFile 重启Ipython内核 重新运行
  • OWL 限制 - 定义仅包含具有特定属性值的属性的类

    我目前正在玩 OWL 尤其是有限制的情况 我正在尝试创建一个执行以下操作的查询 假设我有一个类 Cinema 它具有属性 movies 包含 Movie 类型的对象 Movie 类包含一个名为 genre 的属性 现在我想创建一个 Acti
  • 如何自动设置跨度计数和图标大小

    我正在使用回收器视图和卡片视图来显示应用程序中的图标 我无法弄清楚如何调整应用程序图标的大小并根据屏幕尺寸自动增加 减少跨度计数 这是我正在做的显示它的操作 并且花费计数固定为 3 RecyclerView mrv RecyclerView
  • 使用 ASCII/拉丁字符集是否可以加快数据库速度?

    看起来 对大多数字段使用 ASCII 字符集 然后仅对需要它的字段指定 utf8 可以将数据库必须执行的 I O 量减少 100 有人知道这是真的吗 更新 以上并不是我的问题 我应该说 使用拉丁语作为默认字符集 然后只为需要它的字段指定 u
  • 尝试管理共享公共基类的多个类时出现 Spring 错误?

    我目前使用 Spring 3 0 x 我想知道这些结构有什么问题 我想管理子类而不是父类 我有 2 个子 DAO 扩展了 BaseDAO public abstract class BaseDAO
  • 如何让VBox填充其父级的大小

    这是使 VBox 填充其父级的正确方法吗 final Group root new Group final Scene scene new Scene root 1000 800 Color BLACK final VBox c new V
  • WCF @ServiceHost 调试=“true”但 web.config 编译=“false”

    我一直在查看 MSDN 文档 但没有找到具体的答案 ServiceHost 中的 Debug 属性是否会覆盖 Web config 的编译属性 还是 web config 属性会覆盖所有属性 Thanks 根据 http msdn micr
  • 将多条记录合并到表中的一行中

    我有一个表 其中有多个相同销售代理 ID 但不同销售额的记录 如何删除多行并仅获得总值的聚合 例如 我们假设表结构如下 SalesAgentId SalesAgentName SalesAmount 111 John Doe 8437 00
  • 使用可传输对象调用 postMessage 时,MessageChannel port.postMessage 的数据为空?

    我正在学习关于消息通道 http dev opera com articles view window postmessage messagechannel channel and 可转让物品 https developer mozilla
  • HABTM 连接表上需要两个索引吗?

    一个简单的has and belongs to many协会 Person has and belongs to many products Product has and belongs to many persons Are both以
  • MySQL:如果外键存在则插入

    我有一个包含大约 2000 行的 Excel 工作表 我想将其插入到数据库中 问题是我想要插入 2 000 行的表有一列引用了另一个表中的外键 不幸的是 许多查询失败 因为提供的外键值不存在 我知道我可以忽略外键检查 但这不是我想要的 我不
  • 在地图上绘制坐标

    我正在尝试使用 R 绘制我的坐标 我已经尝试遵循不同的帖子 R 在世界地图上绘制分组坐标 https stackoverflow com questions 16234092 r plot grouped coordinates on wo
  • 我可以在 Rust 中定义一个带有自身类型参数的特征吗?

    我是 Rust 新手 在处理特征和泛型方面遇到困难 我首先定义一个特征来为我做一些工作 然后定义一个将其用作类型参数的通用结构 现在我意识到 在原始特征中 我实际上想使用我定义的结构 所以我处于一种循环中 我不知道如何摆脱它 并且想知道我想
  • ssh -vT [电子邮件受保护] 的权限被拒绝(公钥)错误

    安装了 Git 并创建了与 Facebook 应用程序一起使用的 heroku 帐户 无法与github建立连接 使用windows Git命令提示符将文件克隆到本地windows 7 输出如下 ssh vT email protected
  • Windows 7 操作中心

    如果有人可以指导我修改 控制 Windows 7 操作中心所需的新 MS API 我将不胜感激 我需要做的是将备份通知消息集成到我的应用程序中 该应用程序是操作中心的备份应用程序 换句话说 我希望Windows在第三方软件完成备份操作后显示
  • 使用 jQuery 从 'a' 元素的 'href' 属性中剪切文件名的最佳方法是什么?

    例如我有简单的代码 ul class list li a href http www aaa com bbb ccc file01 pdf Download file 01 a li li a href http www bbb com c
  • 我可以删除弹出视图中的箭头吗?

    我被要求删除弹出视图的箭头 这是否违反了人机界面准则 在另一个弹出窗口中显示一个弹出窗口是否明智 如果不违反人机界面准则怎么办 对于斯威夫特 popoverMenuViewController permittedArrowDirection
  • 在 vscode 中将现有 Java 项目转换为 Maven

    我有一个没有任何东西的旧Java项目 我想使用maven 因为缺少一些依赖项并且我找不到库 有人可以告诉我如何将该项目转换为 MavenWITH VSCODE 以下是一些步骤 告诉 VS Code使用Maven https code vis
  • 如何获取最顶层活动的标识符?

    我有一个服务 当最顶层的 Activity 发生变化时 它的行为必须改变 假设 活动 A 处于活动状态 然后服务开始某种处理 当 Activity A 不再可见时 此处理必须停止 用户按下 后退 主页 或执行任何其他操作使 Activity