问题标签 [android-doze-and-standby]
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.
android - Android AlarmManager.setExactAndAllowWhileIdle() 和 WakefulBroadcastReceiver 在一些新制造的低价设备中不起作用
我认为这个问题被问了很多次,stackoverflow
但仍然有很多人在努力解决它。
在我的 android 应用程序中,我必须每半小时唤醒一次设备以获取当前位置并将其发送到服务器。为此,我使用AlarmManager
了setExactAndAllowWhileIdle()
方法和WakefulBroadcastReceiver
. 它在三星、LG(Nexus)、索尼、松下、联想、摩托罗拉、Micro max 等几乎所有标准/流行设备上都能正常工作....但其他一些设备大多是中国设备不支持或不允许设备唤醒从打盹模式与setExactAndAllowWhileIdle()
. 我已经在leeco letV (Android OS 6.1)
不允许警报管理器在特定时间间隔唤醒的设备中对其进行了测试。
我在下面提到的代码部分:
每次上述服务都会在呼叫后 30 分钟后设置下一个警报。
因为我已经从leeco letV
设置 > 电池 > 对齐唤醒 > 禁用这两个选项等设备手动更改了一些设置。如果启用电池可以忽略应用程序的强制唤醒。
我的问题:
在这种设备中发生了什么?为什么他们不允许警报在特定时间间隔内触发?
在某些设备中,例如 Gionee 的 plus 警报延迟 2-3 分钟...为什么?
android.net.conn.CONNECTIVITY_CHANGE
广播接收器在网络连接发生变化时收听......当它在某些设备(如 Gionee s plus)中不工作时该怎么办?不同制造商的电池优化设置有很多变化......如果是这样的话,它会损害我们应用程序的后台服务吗?然后是什么解决方案。
android - 设备处于打盹模式时网络故障
我对打盹模式有疑问。在打盹模式下,当我们收到 GCM 通知时,应用程序可以访问网络服务多长时间?我们可以获取部分唤醒锁以防止再次进入打盹模式吗?如何查看设备是进入打盹模式还是退出打盹模式的日志?
在我的应用程序中,我有一个 pjsip 本机库,当我们收到 GCM 通知时,它会为 SIP 注册进行 SRV 查找。当我们收到 GCM 通知时设备被唤醒,但当我们尝试 SRV 查找时,我们收到“不允许操作”错误。
此问题仅在打盹模式下发生
有人可以帮忙吗
android - Doze 是否适用于 Marshmallow 设备上具有 minSdk 21 的应用程序?
我的应用程序有 minSdkVersion 21 targetSdkVersion 25 compileSdkVersion 25。我正在使用 AlarmManager 进行一些关键的定期检查——这是客户的要求;他们不希望检查被跳过或延迟。
我不确定 Marshmallow 或 Nougat 设备上的 Doze 会如何影响我的应用程序和这些警报。更准确地说,操作系统会应用 SDK21 规则并为我的应用程序跳过打盹,还是操作系统会强制执行打盹?
如果 Marshmallow 将强制打盹,我想对这些警报使用 setAndAllowWhileIdle(),但我无法这样做,因为 minSDK 是 21。
任何帮助将不胜感激!
android - 打盹模式处理
我正在开发一个使用 AlarmManager 在后台生成一些服务的应用程序。时间对我们的应用程序非常重要,功能不能等待下一个维护窗口的出现。要求用户将应用程序列入白名单不是问题,但不能解决暂停警报的问题。此外,电池消耗也不是什么大问题。
我想到的第一个可能的解决方案是生成一个始终运行的前台服务来处理服务的重新调度,而不是 AlarmManager,但这样做会改变我们应用程序的大部分基本结构,对我们来说是不可行的。
我刚刚实施的当前修复是发送高优先级推送通知并在接收到消息时,采取完全唤醒锁定并打开屏幕以打破打盹模式。
我想知道是否有另一种打瞌睡模式的方法?也可以不使用唤醒锁吗?实施上述解决方案会产生一些可能的影响吗?
PS 我正在使用 UrbanAirship 进行推送通知。
android-doze-and-standby - isIgnoringBatteryOptimizations 不适用于三星
我正在测试我的新应用程序,但我遇到了问题
isIgnoringBatteryOptimizations
特征。
当应用程序启动时,它会检查应用程序是否被列入打盹白名单。如果没有,它会向用户显示一条消息,因为应用程序需要处于活动状态并且不能被杀死。
它适用于多个设备和仿真器,但我有 2 个 SAMSUNG 设备用于测试,在这些情况下,isIgnoringBatteryOptimizations 的值总是错误的。无论用户做什么(将应用程序添加到打瞌睡的忽略列表中),应用程序总是认为正在优化,因此它总是显示警告消息。任何想法对于那些三星设备可能有什么问题?
这是我使用的代码:
对于我测试过的三星设备,“b”总是错误的。
android - oppo-coloros、vivo-funtouch os、小米-MIUI os等定制操作系统新推出的设备如何保护后台服务/报警被杀?
我有一个WakefulBroadcastReceiver
,IntentService
每半小时报警一次并做一些事情。我已经用setExactAndAllowWhileIdle()
方法处理了打瞌睡模式。
最近在市场上推出了一些带有定制操作系统的新智能手机,它们有自己的基于安卓操作系统的定制操作系统。比如OPPO用color os,vivo用funtouch os,xiomi用MIUI os。在操作系统中,有一个功能可以清除内存。他们有一键清除记忆选项。例如,如果用户清除最近的应用程序列表或从最近的应用程序列表中删除应用程序,应用程序的所有后台服务以及所有警报都将被终止。
如何使用这些新操作系统?
android - 打盹模式期间维护窗口的持续时间是多少?
我正在寻找使用 Jobscheduler api 来安排作业,当有连接从推送消息中下载一堆图像时。由于操作系统在打盹模式下忽略了唤醒锁,并且由于 fcm 消息最多只能唤醒设备 10 秒,因此维护窗口似乎是我从所有推送通知中下载图像的唯一方法。
每个图像最大 100kb,一次最多 50 个图像。所以基本上所有的最大5mb数据使用量。
我想知道打瞌睡模式下的窗口是否足够宽以允许这些下载。
我在 Google 上进行了搜索,发现了一些松散的数据细节,声称需要 5 到 10 分钟。
谁能指导我正确的信息。
谢谢并恭祝安康。
android - 如果由于打盹模式而没有运行,有什么方法可以防止警报触发?
这种打盹模式让我很难实施适当的警报系统。基本上我想让我的用户每 15 或 30 分钟运行一次 web 服务调用。因此,假设用户将应用设置为每 30 分钟运行一次警报。虽然该设备是正常使用的,但警报会或多或少准确地触发(我正在使用setRepeating
),但对于我的目的来说已经足够了。
根据文档,当设备打瞌睡时,我的重复警报不会触发,但是当设备退出打瞌睡模式时,所有未运行的警报都会一个接一个地运行(或类似的)。所以我在早上结束时可能会一个接一个地发出 4-6 个警报,所有警报都从 web 服务中获取相同的数据。或者当维护窗口发生时同样的事情......
有没有办法告诉打盹模式,如果我的警报没有在要求的时间触发,根本不运行它?或者如果有多个警报没有触发,只触发最后一个?
LE:我的代码有一个错误,导致警报过于频繁,这就是为什么我有一种印象,推迟的警报都会一个接一个地运行……
android - 打盹模式电池优化,设备特定问题
我以编程方式实现了忽略电池优化功能。我发现了很多问题和答案,但我想知道IGNORE_BATTERY_OPTIMIZATIONS仅适用于纯 android 还是有其他情况?
我有几个设备如下所列:
- 摩托 g4 (7.0)
- 摩托游戏 (6.0)
- 三星 Galaxy Note 4(6.0)
- 小米笔记 4 (6.0)
- 联想 Tab(6.0)
- 荣誉 (6.0)
它在 Moto 设备中正常工作。
在 Moto 中,我们可以弹出窗口,如果我们接受许可,那么它运行良好。
它在联想标签和荣耀设备中的正确率是 50%。
- 在联想选项卡中,当权限弹出出现时,如果我们接受权限,则添加应用程序,但是当我们手动更改设置时,它不起作用。
- 好吧,在荣耀设备中,当我们获得权限弹出窗口并接受权限后,我们打开设置并检查其在不允许电池优化应用程序中列出的应用程序状态,但应用程序的状态是“允许电池优化”。之后,当我们手动允许它时,它将起作用。
在 MI 和三星设备中,它不再工作了。
好吧,小米设备是例外情况,因为它们有自己的定制架构,所以我们不关心小米设备。
对于三星 note 4,有一个特殊情况如下:
安装应用程序后,我们会弹出权限并接受权限。之后我们在设置中检查它,但该应用程序未列在“不允许电池优化”应用程序列表中。(注意:当设备重启时添加的应用不允许电池优化)
这是代码:
请就这种不同的行为提出建议。如果有解决方案,请告诉我。它变得令人沮丧。
android - Xamarin.Android:屏幕关闭时服务停止工作(打盹/应用待机模式)
如果我每 120 秒发送一次 GPS(纬度/经度),我必须实施一项服务。到我的 REST 后端。
我的问题是屏幕关闭时服务似乎停止工作。
- 尝试使用 StartedService 和 BroadcastReceiver
- 尝试使用 IntentService 和 WakefulBroadcastReceiver
1. Attempt 例如适用于 SAMSUNG Galaxy X COVER,但不适用于 HUAWEI P9 Lite。尽管我关闭了华为手机中的省电模式(Power Apps)。所以当屏幕关闭时我的应用程序会继续运行。例如 10 分钟后,我在华为手机上打开屏幕并在运行服务中看到服务正在运行(经过的秒数),因此我可以验证服务没有关闭。
2. 屏幕关闭时尝试在没有手机的情况下工作。
当屏幕打开(无睡眠)时,这两种尝试都正常工作。
注意:为简洁起见,我删除了不相关方法的代码(获取/传输 gps 数据)。
这是1的代码。尝试:
服务
广播接收器
在 MainActivity.OnCreate 中注册 Broadcastreceiver
2.尝试
服务
唤醒接收器
AndroidManifest.xml
添加了 WAKE_LOCK 权限
我现在真的很绝望。希望可以有人帮帮我。谢谢
埃里克