android - 如何知道 Android 任务的可见性变化?

标签 android task

我有 2 个使用相同 Android 任务的 Activity - 即它们将使用相同的返回堆栈。

我们称 A 为返回栈中的第一个 Activity ,B 为返回栈中的第二个 Activity 。

情况 1: A 收到通知,当 A 在前台然后 B 出现在前台(出于任何原因,比如因为它收到了外部 Intent )。

情况 2:当 A 在前台但另一个应用程序在前台启动时,A 收到通知它进入后台.

问题:我的应用如何区分这两种情况?有没有办法知道转换 A in foreground -> A in background 是否保持当前任务显示在屏幕上?

基本上,我需要在 Android 任务变得可见或不可见时获得一个事件。

最佳答案

如果我对您的理解正确,如果 Activity BA 暂停后没有被激活,您的 Activity A 会做一些不同的事情。

首先,让一个 Activity 在 Activity 不再可见时做某事不是一个好主意。正如我们在 Android 生命周期中看到的那样,它可能会停止: enter image description here

我会将您的后台代码放入服务中。只要 Activity AB 暂停或恢复,该服务就会收到通知。在那里你可以添加一个必须通过的小超时,直到你开始你的逻辑。

如果你这样做,那将会发生:

案例 1: Activity A 进入后台并在 onPause 处理程序中向您的服务发送消息。服务启动其超时计时器。 Activity B 启动并在其 onResume 处理程序中向服务发送消息。

现在服务知道它仍然是相同的 Activity 并采取相应的行动。

案例 2: Activity A 进入后台并发送消息。该服务启动其超时计时器。它超时(我认为 200 毫秒就足够了),现在您的服务知道该任务不再处于 Activity 状态并采取相应行动。

关于android - 如何知道 Android 任务的可见性变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23262347/

相关文章:

Android 平板电脑 - 在输入字段中使用 Tab 键在 iframe 中的表单中不起作用

java - 在 Java (Android) 上将内部类导入主 Activity 时出现问题

c# - SSIS 无法创建此任务?

c# - 使用 C# 将同步方法转换为异步方法

android - 在android中播放下载的Gif图像

android - 从 OkHttp 拦截器内部进行同步 Retrofit 调用

java - Android Sqlite 表未创建

c# - 将任务实例传递给任务的委托(delegate)

c# - .NET 的任务池系统

task - C++ 相当于 .NET 的 Task.Delay?