【问题标题】:Cordova + Android 6 dozeCordova + Android 6 打瞌睡
【发布时间】:2025-12-24 18:30:17
【问题描述】:

我为 Android 开发了一个套接字应用程序(实时)。一切正常,直到 Android 6 更新带来“打瞌睡”模式。有没有防止打瞌睡的插件?这使我的应用程序无用,因为当应用程序进入打盹模式时,应用程序无法再使用网络连接。我正在运行一个后台模式插件,但这还不够,打瞌睡会接管。 谢谢。

编辑:在 Emanuel 的 cmets 之后,我找到了 this post,但没有有效的答案。

如何将我的应用添加到白名单中,使其不会因“打瞌睡”而停止?我在任何地方都找不到任何信息...除了this doc,但没有说明如何添加到白名单。由于我的应用不依赖 GCM,我应该会很好,只要我能找到如何添加我的应用!

【问题讨论】:

  • 确保应用在白名单上(允许网络连接)并运行前台服务(防止应用待机)?见developer.android.com/training/monitoring-device-state/…
  • 你能说得更具体点吗?
  • @Eric,这是全新的,Cordova 团队可能还没有做到这一点。我只是通过搜索whitelist 偶然发现了这一点(与网络访问有关——这是一种一般的安全措施,而不是省电。)最好的办法是与background mode 插件的作者交谈。跨度>
  • @Eric,你在问插件,也许那应该是一个标签。我已经为你添加了。 FWIW:我现在在Android Doze 上有注释。
  • @JesseMonroy650 好吧,我最初是在寻找一个插件,直到我发现了白名单。现在我只是想知道如何添加到那个“列表”

标签: android cordova cordova-plugins android-6.0-marshmallow


【解决方案1】:

使用此 Cordova 插件以编程方式从电池优化设置中将 Android 应用程序列入白名单

安装

cordova plugin add https://github.com/thomas550i/cordova-plugin-doze-Optimize

Javascript 使用代码

cordova.plugins.DozeOptimize.IsIgnoringBatteryOptimizations(function (responce){
  console.log("IsIgnoringBatteryOptimizations: "+responce);
      if(responce=="false")
      {
        cordova.plugins.DozeOptimize.RequestOptimizations(function (responce){
          console.log(responce);
        }, function (error){
        console.error("BatteryOptimizations Request Error"+error);          
        });
      }
      else
      {
        console.log("Application already Ignoring Battery Optimizations");
      }     
}, function (error){
console.error("IsIgnoringBatteryOptimizations Error"+error);    
});

【讨论】:

    【解决方案2】:

    没有防止打瞌睡的插件

    但用户可以在设置 > 电池 > 电池优化中手动配置白名单。或者,系统为应用程序提供了要求用户将其列入白名单的方法。

    应用可以触发 ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS Intent,将用户直接带到电池优化,在那里他们可以添加应用。

    检查这个:https://developer.android.com/training/monitoring-device-state/doze-standby.html

    【讨论】:

      最近更新 更多