问题标签 [activity-manager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5148 浏览

android - “I/ActivityManager: Displayed...activity...+850ms”由什么组成?

我正在尝试改善我的应用活动的显示时间。
我正在使用 logcat 来跟踪我的活动显示时间。

下面是一个 logcat 输出的例子:

I/ActivityManager(1097): Displayed com.example.myapp/com.example.myapp.activity.TutorialActivity: +850ms (total +1s503ms)

有人可以告诉我活动经理如何得出这是显示活动所需的时间吗?
这段时间会发生什么,这段时间考虑了什么?
“正常时间”和“总时间”有什么区别?

我试图找到有关此事的材料,但没有成功..

提前致谢!

0 投票
0 回答
1262 浏览

android - Android 中的 libprocessgroup 是如何工作的?

假设一个应用程序进程由 zygote 启动,PID 为 1234。当应用程序启动时,PID:1234 分叉另一个进程,例如 PID:1300。当我退出应用程序时,PID:1234 被信号 9(SIGKILL )。PID: 1300 然后成为孤立进程并被 init 进程 (PID: 1) 采用。很快,libprocessgroup 也会触发并杀死 PID: 1300(作为 PID: 1234 的进程组的一部分)。这是如何触发的?换句话说,libprocessgroup 什么时候突然介入清理剩余的进程?

0 投票
4 回答
1435 浏览

android - 通知按钮后返回原始活动

我写了一个应用程序,它会通过alarmIntent 每隔一段时间显示一个通知。用户单击通知并进入活动。在此活动中执行某些操作后,他应该在单击通知之前按一个按钮返回到他所在的原始应用程序(如浏览器或主屏幕等)。我的问题是,用户总是返回到我的应用程序的主要活动。我该如何改变呢?

谢谢!

0 投票
2 回答
8982 浏览

android - Android M:如何获取当前前台活动包名称(来自服务)

在 Android L 上很容易从 ActivityManager 服务中获取正在运行的任务列表,并且首先返回当前活动的任务。但它不再适用于 Android M,返回列表仅包含我的应用程序任务。有什么办法解决吗?

我的代码:

0 投票
0 回答
119 浏览

android - Android:无法找到活动是否是堆栈中的最后一个活动

我正在我的应用程序中打开一个链接,一旦按下返回,我想显示主页以保留用户更多时间。我一直在努力实现这一点,但无法做到。我将 homeLauncher 活动作为我的 top 和 baseActivity。

DeepLink 点击 > 打开所需的活动 > 用户按下后退按钮 > 检查其最后一个活动但不是 homeActivity > 如果是,则将用户导航到 homeActivity。

尝试了以下代码:

Android Studio 评估

我也试过 isTaskRoot 但结果是一样的。它没有给出正确的答案。请帮助

0 投票
5 回答
6671 浏览

android - 如何查找活动是否是堆栈中的最后一个活动

我正在我的应用程序中打开一个链接,一旦按下返回,我想显示主页以保留用户更多时间。我一直在努力实现这一点,但无法做到。我将 homeLauncher 活动作为我的 top 和 baseActivity。

DeepLink 点击 > 打开所需的活动 > 用户按下后退按钮 > 检查其最后一个活动但不是 homeActivity > 如果是,则将用户导航到 homeActivity。

尝试了以下代码:

Android Studio 评估

我也试过 isTaskRoot 但结果是一样的。它没有给出正确的答案。请帮助

0 投票
2 回答
1021 浏览

java - 如何杀死android中的其他前台活动?

我想杀死其他(不是它自己)前台活动/服务。我检查了一些关于杀死应用程序的方法。

  1. ActivityManager.restartPackage(String packageName)
    自 android 2.2 起已弃用。所以我不能用这个方法。

  2. ActivityManager.killBackgroundProcesses(String packageName)
    我认为它只会杀死后台活动。但我想使用 startForeground() 终止前台服务。

有什么方法可以杀死其他前台活动/服务吗?

0 投票
2 回答
490 浏览

android - 如何在android程序中获取进程启动的原因?

我可以看到一些这样的日志:

所以,我想知道,我怎样才能在这个过程中获得活动的类名

0 投票
1 回答
2130 浏览

android - 使用 activityManager.getRunningAppProcesses() 获取(真实)前台进程

我正在尝试确定用户当前可见的应用程序。为此,我使用该activityManager.getRunningAppProcesses()方法。

我知道 Android 5.1.1 不支持该方法 - 这没关系。

一开始它就像魅力一样,我正在遍历 RunningAppProcessInfos 列表并检查其重要性。

tl; dr获取当前前台进程并防止误报的正确方法是什么?列表的顺序是如何完成的 - API 说它没有指定。有没有办法正确订购它们?

我做了什么:

不幸的是,ActivityManager 返回的列表在每个设备上都不同。一些设备返回多个重要性为 100(即 FOREGROUND)的信息,即使该进程当前不可见。

这导致了我有很多误报的问题。例如,我用 facebook 对其进行了测试,并在每次 facebook 处于前台时创建了一个 toast。我切换到主页,所以我的启动器应该是前台进程。大约 10 秒钟后,facebook 再次以 FOREGROUND 重要性出现在列表中(它既不打开也不可见),我得到了误报。

我认识到某些设备按最近的进程排序列表。所以我决定尝试以下方法:

使用appProcesses.get(0); 我只检查第一个元素,错误就消失了。不再有误报。

但是,现在在某些设备上,我根本无法获得前台进程。因为他们不会以任何方式对列表进行排序。例如,一些 4.2 索尼智能手机就是其中的一部分。我得到了列表,但当前真正可见的进程在索引 11 左右。

我不知道该怎么做才能获得当前的前台进程,而不会出现误报。

获取当前前台进程并防止误报的正确方法是什么?列表的顺序是如何完成的 - API 说它没有指定。有没有办法正确订购它们?

谢谢!

0 投票
4 回答
9432 浏览

android - 如何获取当前正在运行的所有任务

我想获取在 android 中运行的所有任务。我在 ActivityManager 中找到了 getRunningTasks,但从 android-5.0 开始,getRunningTasks 可能不会提供所有任务(在我的情况下,它提供主屏幕和我的应用程序)。

此外,是否可以找到用户当前正在与之交互的任务?

任何帮助将不胜感激。

谢谢。

编辑:我正在使用以下代码。但它只给了我一个进程(那是我的应用程序)。即使我打开其他应用程序也没有显示它们。我在 One Plus2 上运行它。