问题标签 [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 投票
1 回答
648 浏览

android - Android 6.0 - App Standby 和 AppWidgets

在应用小部件的上下文中,Google 对用户“积极使用”应用的定义是什么?如果一个应用程序长时间没有打开但在主屏幕上有一个小部件,有人知道Android是否会将该应用程序置于待机模式?从文档来看,应用程序小部件似乎适合以下描述:“应用程序当前有一个进程处于前台(作为活动或前台服务,或正在被另一个活动或前台服务使用)。” 但我不太确定。

想法?

https://developer.android.com/preview/features/power-mgmt.html

0 投票
1 回答
1019 浏览

android - Android 6 UsageStatsManager isAppInactive() permission

I'm using isAppInactive() method from UsageStatsManager class on Android 6 (API 23) to detect the standby state of the app I'm developing.

The docs affirm that it is necessary to request PACKAGE_USAGE_STATS permission but I'm able to use that method without requesting the permission.

Is this a bug?

0 投票
2 回答
1709 浏览

android - NotificationListenerService 和 Doze 模式和 App Standby

我有一个应用程序可以监听电话通知并通过MessageApi. 除了一些搭载 Android 6 的设备,尤其是华为 Mate 8(看起来所有的华为 Android 6 都这样做),一切都运行良好。

华为有自己的冻结应用程序后台处理(受保护的应用程序)的实现。从用户报告中,我确认我的应用在华为受保护的应用和 Android 6 的打瞌睡模式下都有异常。该应用程序运行正常,但在显示关闭 15 分钟后,我的应用程序停止向连接的 Android Wear 手表发送消息。我的应用程序还可以记录收到的通知历史记录,15 分钟后什么都没有收到……直到手机显示屏打开并打开我的应用程序。之后,在手机显示屏关闭时本应到达的所有通知都会立即到达我的NotificationListenerService实现并发送到手表。这也被记录的历史所证实。

任何想法如何为这些手机解决这个问题,尤其是带有打瞌睡模式的 Android 6 的华为 Mate 8?

NotificationListenerService设备处于打盹模式和/或应用程序处于待机模式时的正确行为是什么?

编辑

用户还确认他们的手机没有处于省电模式,这也会影响后台应用程序及其服务。这个错误看起来像是华为独有的,因为没有 Nexus 用户报告过这个问题,而我的 OnePlus One with M 也没有这样做。N 预览也适用于 Nexus 设备。

编辑 2

我添加了一个可选的前台服务startForeground()(对于前台服务通知,我使用了优先级NotificationCompat.PRIORITY_MIN并添加了Notification.FLAG_ONGOING_EVENT标志。这对华为手机有点帮助,但作用不大,现在延迟通知NotificationListenerService在屏幕打开后立即到达我的应用程序后。我不在startForeground()我的NotificationListenerService但在另一个中使用,Service因为我无法控制它的生命周期。

0 投票
1 回答
6561 浏览

android - 如何以编程方式关闭棉花糖设备中特定应用程序的打盹模式

Marshmallow API 与以前的 android OS 非常不同。当屏幕关闭时,设备处于打盹模式并且无法同步网络。因此,为了使用网络进行后台操作,我们必须防止打瞌睡模式。

0 投票
0 回答
1031 浏览

android - 如何检测应用程序是否进入或退出应用程序待机模式(Android M+)

如果设备处于 DOZE IDLE 或 IDLE_MAINTENANCE 模式,如果我们为“ android.os.action.DEVICE_IDLE_MODE_CHANGED ”注册一个广播接收器,就可以接收到这些事件。但是,当使用 adb 命令使 App 进入App Standby时,此接收器不起作用。对于在 Marshmallow 及更高版本上运行的设备,我们是否可以以编程方式检查应用程序是否已进入或退出应用程序待机模式?

用于使 App 进入 App Standby 的 adb 命令

并退出

0 投票
1 回答
102 浏览

android - 有没有办法在安卓手机上提取应用程序列表?

所以关于我想要做什么的一些背景故事。我正在研究一个应用程序的想法,它可以扫描你手机上的应用程序、杂货的条形码和其他东西,并显示它们对环境的影响的信息。

所以我想做的是看看是否有一种方法可以提取所有已安装的安卓手机应用程序的列表,然后我就能够将这些应用程序与我将收集的信息相匹配(仍然认为有点出来)。

我在 android studio 工作并浏览了这里的论坛,但我发现的并不是我真正想要的,因为它们指定了正在运行的应用程序。

0 投票
0 回答
1949 浏览

android - android 7.1.1 (Nougat) 应用待机和网络

当应用程序处于后台时,我需要发出网络调用。顺序如下。应用程序接收 GCM 调用,向 BE 发出 API 调用以获取更多数据,然后显示通知。GCM 调用被完美接收,但 API 网络调用因超时而失败,原因如下stack-trace

我正在使用okhttpver 2.7.5retrofit 1.9.0

该应用程序在后台,但设备没有打瞌睡,屏幕打开,甚至正在充电。所以这不可能是打瞌睡的问题。

发生在WiFi和上3/4G

pre-nougat设备没有这个问题。

UPD 当应用程序在电池设置中被选择为“未优化”时,一切都像一个魅力。

0 投票
2 回答
2346 浏览

android - 从 android marshmallow 的白名单中删除应用程序

我没有找到有用的信息如何以编程方式或使用设备设置从白名单中删除特定应用程序。

在 android 6.0 中引入了 doze-mode 和 while-listed,最后一个术语允许忽略部分 doze-mode。

要将应用程序放入白名单应用程序需要执行代码:

我尝试了下一步操作以将应用程序从刚刚放入的白名单中删除,但没有任何帮助:

  1. 在设置中清除数据应用
  2. 删除应用程序并重新安装

要检查同时列出的应用程序的当前列表,可以使用 dumpsys

真正的帮助是更改应用程序的包名称。我的观点是,如果应用程序被列入白名单,那么它就永远不能从那里删除。

手机魅族U680h。在另一台设备上没有测试。

0 投票
1 回答
567 浏览

android - 如何避免后台同步应用的应用待机?

根据Understanding App Standby,如果一个应用看起来好像用户不经常使用它,那么它就可以进入待机状态。

我们有日历和联系人同步应用程序,这些应用程序设置一次并(理想情况下)在后台运行,此后无需与用户交互。这些应用程序同步到日历和联系人数据库,因此它们没有用户必须经常打开的 UI。他们只有一个您并不经常需要的帐户管理 UI。

因此,上述文章中提到的条件均不适用于我们的应用程序。尤其是:

  • 用户不必为了“使用它”而打开它,所以他几乎没有启动它
  • 该应用程序不运行前台服务
  • 我们不显示任何通知(除非发生错误)
  • 它肯定不是设备管理应用程序

所以我的问题是,这样的应用程序(仅在后台运行)避免被系统置于待机状态的预期方式是什么?

我们收到许多来自用户的报告,称该应用程序停止在最近的三星设备上同步,除非它每 3 天打开一次。将应用程序添加到不受监控的应用程序白名单似乎没有帮助。我们的日志显示,在 3 天未启动应用程序后,同步适配器不再启动,即使在触发“手动”同步时也是如此。只有当手动打开应用程序时,它才能继续同步。

我们真的必须显示通知才能保持“活着”吗?

0 投票
0 回答
311 浏览

android - 当我的应用程序处于“应用程序待机模式”时,FCM 不起作用

我正在构建一个使用 Sendbird 服务实现聊天的 Android 应用程序。Sendbird 使用 FCM(Firebase 云消息传递)发送应用程序在后台时收到的新消息的通知。

如果禁用 Android 节能功能,一切正常,但如果此功能处于活动状态,我不会收到有关某些消息的通知。

如果我按照 Android 开发者页面 ( https://developer.android.com/training/monitoring-device-state/doze-standby )中的建议将我的应用程序置于后台并将其设置为“AppStandby 模式” ,我看到 FCM 没有'不起作用,我的通知消息丢失了。

我使用了以下 shell 命令:

相反,当我的应用程序处于“打盹模式”时,一切正常。

因为是 Sendbird 服务器向我的应用程序发送通知,所以通过 FCM,我无法设置消息的高优先级,我也认为高优先级不是解决问题的正确方法。

任何人都有解决问题的想法?请帮帮我!!!!