问题标签 [android-appstandby]

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 投票
2 回答
263 浏览

android - 位置跟踪、打瞌睡、AppStandby

我已经使用 IntentService 实现了后台位置跟踪。我能够在前台模式下接收位置点。但是当设备被锁定或应用程序被杀死一段时间后,我无法接收位置点。如何在后台跟踪设备位置时处理 Doze 和 AppStandby?

我不想一直运行前台服务。处理 Doze 和 AppStandby 的后台连续位置跟踪的任何解决方案?

0 投票
0 回答
796 浏览

android - 电池优化不适用于某些应用程序。怎么可能?

我想为我的应用程序禁用电池优化。我知道使用 REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 显示对话框是用户可以禁用它的方式。但在 QK SMS 等某些应用程序中,即使在电池设置中也完全禁用它。我怎样才能像这样完全禁用我的应用程序的电池优化?

系统电池优化设置中的 qksms 图像

0 投票
1 回答
496 浏览

android - 是否可以在打盹模式或应用待机期间运行 Android 定期和一次性工作人员?

我有一个应用程序,它使用定期和一次性工作人员来执行各种任务,其中一些需要网络连接。我的客户向我报告说,在他根本不使用该应用程序的那一天,他没有执行某项必需的日常任务。尽管应用程序在某一天没有运行,但工作人员仍然需要运行才能向后端服务器报告各种统计信息。我认为这是因为该应用程序一整天都处于应用程序待机模式,并且设备至少在一天中的部分时间处于打盹模式。所以我的问题是,是否可以在应用程序处于应用程序待机或打盹模式时让定期或一次性工作人员运行,还是会一直延迟到设备和/或应用程序唤醒?

或者,我是否会更好地使用警报而不是工人?我看到可以使用setExactAndAllowWhileIdle()“即使系统处于低功耗空闲模式也允许执行”来设置警报。“空闲模式”是否意味着打盹和/或应用程序待机模式?

我一直在努力解决这个问题,因此非常感谢任何帮助和/或指导。

0 投票
1 回答
685 浏览

android - Android - 禁用 Forced DozeMode 或 AppStandByMode

我有一个使用 aForegroundService将位置更新发送到服务器的应用程序。基本上是一个跟踪器。

ForegroundService有一个Handler定期(使用postDelayed)执行一段代码来发送位置。

当应用程序处于前台甚至后台时,这工作得非常好,但我开始注意到手机锁定时出现延迟,屏幕关闭大约 15 分钟。我的意思是,15 分钟没有用户活动,也没有插入充电器。

这发生在Android Q (v10)设备上。我假设这也会发生在任何运行 Oreo 的设备上。

让我们说清楚......我的应用程序每 30 秒发送一次位置,但是当输入我认为是DozeModeAppStandByMode时,它​​会继续发送位置,但每 2 分钟(或多或少)。如果我打开屏幕或插入充电器,它会立即恢复到 30 秒的速度。这就是让我对DozeModeAppStandByMode 感兴趣的原因。此外,如果我不碰手机,但插入充电器,那么这永远不会发生。

如前所述,我很确定DozeModeAppStandByMode正在启动,我知道我可以将我的应用列入白名单以防止这种情况发生。但在更进一步之前,我想重现这一点,而无需每次我想测试我的应用程序的行为时等待这 15 分钟。

所以我“用谷歌搜索”了我如何强制这样做,这就是我发现的:

对于DozeMode(见来源

adb shell dumpsys 电池拔掉

adb shell dumpsys deviceidle step deep

并继续执行最后一条命令,直到达到IDLE状态。

对于AppStandByeMode(见来源

adb shell dumpsys 电池拔掉

adb shell am set-inactive packageName true

并使用其他命令查询状态:

adb shell am get-inactive packageName

我确认它返回Idle=true

我什至也按照其他博客的建议进行操作,发布:

adb shell dumpsys deviceidle force-idle

我虽然我没有进入这种模式,但现在看来我是而且我无法摆脱它......查看更新

更新

起初我以为我没有进入打盹模式......现在我可以确认我进入了,但它总是立即触发。(不再等待那 15 分钟)

每当我锁定手机并且屏幕熄灭时,它会自动进入打盹模式并开始间隔位置更新。我插上充电器,然后在 30 秒后再次发送。

我试过:

adb shell dumpsys deviceidle 解除强制

adb shell dumpsys deviceidle 禁用

adb shell dumpsys 电池重置

还是一样。

还:

  • 手机关机和电源备份
  • 卸载应用程序
  • 在应用程序设置中将电池优化更改为不优化

我错过了一步吗?

0 投票
0 回答
173 浏览

android - 当应用程序进入受限应用程序备用存储桶时

由于 android-12 引入了新的受限待机模式。根据android doc,它说应用程序根据应用程序行为+应用程序使用情况进入受限模式

系统会考虑您的应用程序的行为以及使用模式,以决定是否将您的应用程序放入受限存储桶中。如果您的应用更负责任地使用系统资源,则您的应用不太可能被放入受限存储桶中。

问:什么样的应用行为会将应用置于受限存储桶中?任何例子?