BroadcastReceiver 无法访问互联网

2024-02-18

我的广播接收器遇到问题。

我设置了早上 6 点的闹钟,它必须触发我的广播接收器,它只需要从互联网下载一些数据并进行处理。

例如,如果我将闹钟设置为下午 3 点,效果就很好。但问题是早上6点,由于没有网络连接,下载失败。

我在尝试下载之前执行部分唤醒锁定。能和这个有关系吗?手机进入深度睡眠和部分唤醒锁定是否还不够?

还能是什么?我已仔细检查以启用网络数据,并且我确实在夜间收到电子邮件和 Whatsapp。

有没有办法让 android 恢复连接?

非常欢迎任何提示或帮助!

此致, 费德里科.

My code:

BroadcastReceiver 的 OnReceive 方法:

@Override
public void onReceive(Context context, Intent intent) {
    ...
    // acquire partial wake lock
    _PowerManager.acquire();

    // check internet access
    if (!_Utils.isDataEnabled()){
        // here is where it enters at 6am, isDataEnabled return false, so it enters here
        _Log.d("_BroadcastReceiver_Synchronize:onReceive","No internet, cancel sinc");
         // release partial wake lock
        _PowerManager.release();
        return;
    }

    // excecute async task that downloads data
    _WebServicesGet ws = new _WebServicesGet(null, null, null);
    ws.syncAll(this, false);
    return;
}

_Utils.isDataEnabled:

public static Boolean isDataEnabled() {
    // this method returns false at 6am
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}

CommonsWare 让我走上了正轨。

答案是打瞌睡模式:Android 6 及更高版本可以将手机置于打瞌睡模式,在该模式下应用程序将无法接收互联网访问(除其他外)。因此,如果您设置了闹钟和唤醒锁,您将获得 CPU 访问权限,但无法访问 Internet。文档说,如果设备插入,它不会进入打瞌睡模式,但在我的例子中,尽管处于插头状态,但它确实进入了打瞌睡模式:

From 官方文档 https://developer.android.com/training/monitoring-device-state/doze-standby.html#understand_doze:

如果用户在屏幕关闭的情况下将设备拔下电源并静止一段时间,设备就会进入打瞌睡模式。

这很令人困惑。

无论如何,我尝试将我的应用程序列入白名单,并且它开始正常工作。闹钟在早上 6 点响起,广播接收器现在可以访问互联网。

再次来自官方文档 https://developer.android.com/training/monitoring-device-state/doze-standby.html#support_for_other_use_cases:

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

希望我说清楚了,这对其他人有帮助。

感谢 CommonsWare。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BroadcastReceiver 无法访问互联网 的相关文章

  • Spring RESTful控制器方法改进建议

    我是 Spring REST 和 Hibernate 的新手 也就是说 我尝试组合一个企业级控制器方法 我计划将其用作未来开发的模式 您认为可以通过哪些方法来改进 我确信有很多 RequestMapping value user metho
  • 从脚本内更改自动热键托盘图标

    如何从 Autohotkey 脚本中将托盘图标更改为 my ico 例如 当脚本暂停时 为此 我在托盘菜单中提出了自己的 暂停脚本 菜单项 SingleInstance ignore Menu Tray Tip AutoCase 0 11
  • 文本溢出:省略号显示不同的字符

    我这里遇到了一些 CSS 问题 看这张图片 https www flickr com photos 125543025 N07 saved 1 在此图像中 我为文本 INTENSE TRAINING 添加了 CSS 样式 sample st
  • 我们什么时候应该在 Django 中使用“db_index=True”?

    当我们应该定义db index True在模型字段上 我正在尝试优化应用程序并且我想了解更多信息db index 什么情况下我们应该使用它 文档说使用db index True在模型字段上用于加速查找 但在存储和内存方面略有缺点 我们应该使
  • 如何制作过期/签名视频嵌入网址

    我是新来的 正在学习网络开发等等 我只知道如何将我的视频嵌入网站中 任何菜鸟都可以轻松获得源代码 他们也可以嵌入它 但在许多网站中 视频 src 均使用重定向器链接进行编码 例如 它会在一段时间后过期 在本例中是一天 我了解到这是一个签名网
  • Qt 布局,在小部件大小更改后调整到最小大小

    基本上我有一个QGridLayout里面有一些小部件 最重要的是 2 个标签 我用它们将图像绘制到屏幕上 好吧 如果用户愿意 他可以更改传入图像的分辨率 从而强制标签调整大小 我们假设标签的初始大小是320x240 用户将 VideoMod
  • Python 中的字符串slugification

    我正在寻找 slugify 字符串的最佳方法 蛞蝓 是什么 https stackoverflow com questions 427102 in django what is a slug 我当前的解决方案基于这个食谱 http code
  • bash:gitolite:找不到命令

    我正在尝试使用 Gitolite 在 Gitlab 中创建一个新分支 我完成安装步骤 当我遇到 设置 gitolite 部分时 我遇到了麻烦 我跟着这个link http sitaramc github com gitolite setup
  • ASP.NET Core MVC 视图组件搜索路径

    在此处的文档中 https learn microsoft com en us aspnet core mvc views view components view aspnetcore 2 2 https learn microsoft
  • 一些基本的 PHP 问题 [已关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我只是有一些基本的 php 问题来加深我对学习的理解 但我找不到简单的答案 我有一个 php ajax 应用程序 它生成 mysql
  • View.post(),以及当Runnables被执行时

    我最初的问题是需要知道我的根的高度和宽度View这样我就可以进行程序化的布局更改 就我的目的而言 我不一定需要在onCreate 对于我来说 以编程方式添加我的孩子就足够了View根布局完成后 因此我很乐意使用onWindowFocusCh
  • Azure Functions 计时器触发器线程安全

    我想知道是否有人知道如果您在 Azure 函数上设置了 Cron 设置 如果其任务执行时间超过 5 分钟 则每 5 分钟运行一次 会发生什么情况 它备份吗 或者我应该实现一个锁定功能 以防止某些东西 例如在循环中 处理先前调用已经处理的数据
  • SimpleIoC - 在缓存中找不到类型:Windows.UI.Xaml.Controls.Frame

    第一次由 SimpleIoC 实例化我的 ViewModel 时 我遇到了以下错误 我相信我已经按应有的方式设置了容器 但由于某种原因 我仍然收到以下错误 任何想法或帮助将非常感激 Microsoft Practices ServiceLo
  • svn 强制迁移

    我正在考虑将我们的 svn 代码库迁移到 perforce 看看谷歌搜索结果 我确实找到了两个具有相同功能的工具 P4转换ftp ftp perforce com pub perforce tools p4convert docs inde
  • R闪亮:使用闪亮的JS从数据表中获取信息

    我想读出所有列名称以及它们在数据表中显示的顺序 由于不同的原因 我无法使用 stateSave 等选项 我对 JS 没有什么把握 但我确信用它可以完成 所以我需要你帮助我 我尝试过类似的代码片段 datatable data callbac
  • 从 JavaScript 中的 OnClientClick 事件中阻止 C# 中的 asp:Button OnClick 事件?

    我有一个asp Button在我的网页上 它调用 JavaScript 函数和代码隐藏方法 后者进行调用以导航到另一个页面 在 JavaScript 函数中 我正在检查条件 如果不满足这个条件 我想中止导航 以便OnClick方法未被调用
  • Keystore getEntry 在 Android 9 上返回 NULL

    c我已对存储在 Android 密钥库中的登录密码进行了加密和解密 在 Android 9 上 我观察到应用程序在尝试解密密码时崩溃 我无法重现它 但拥有 Pixel 3 的用户是崩溃的设备之一 下面是我如何从密钥库解密密码 private
  • 计算包含字母/数字的行数

    我想要实现的目标很简单 但是解释起来有点困难 我不知道在 postgres 中这是否真的可能 我处于相当基础的水平 SELECT FROM WHERE LEFT JOIN ON HAVING 等等基本的东西 我正在尝试计算包含特定字母 数字
  • Java 和/C++ 在多线程方面的差异

    我读过一些提示 多线程实现很大程度上取决于您正在使用的目标操作系统 操作系统最终提供了多线程能力 比如Linux有POSIX标准实现 而windows32有另一种方式 但我想知道编程语言水平的主要不同 C似乎为同步提供了更多选择 例如互斥锁
  • 如何使用 dql 从数据表中获取唯一值?

    我有一个表 其中有一列存储了各种值 我想使用 dql 从该表中检索唯一值 Doctrine Query create gt select rec school gt from Records rec gt where rec city ci

随机推荐

  • App 引擎 - 检查 Expando 类中是否存在属性

    检查属性是否填充在 Expando 类中的好方法是什么 Python for App Engine 我可不可以做 if Expando class name property name to check do someStuff 或者这会给
  • ValueError:命名空间 Gtk 不可用

    按照说明进行操作时2 入门 Python GTK 3 教程 3 4 文档 https python gtk 3 tutorial readthedocs io en latest introduction html Tries In 6 i
  • 重新排列某些列和行

    我有一个 Excel 电子表格 格式如下 我一直在尝试将其格式化为如下所示 所以我猜这是一种转置 不知道如何称呼它 我花了一个半小时尝试用 VBA 完成此操作 但没有成功 这只是它的格式化方式的一个示例 实际上有大约 50 000 个 所以
  • Objective-C 中的 Gson 等效项

    有没有相当于gson http code google com p google gson在 Objective C 中 Thanks DCKeyValue对象映射https github com dcohfi KeyValueObject
  • 当我使用ansible模块expect时,我得到这个消息:The pexpect python module is required

    我正在尝试使用 ansible 来部署我们的系统 我在 yml 文件中使用了 Expect 模块并尝试使用ansible playbook运行它并收到此错误 致命 192 168 100 132 失败 gt 更改 错误 失败 true ms
  • 过渡到 C++11,其中析构函数使用 noexcept 隐式声明

    在 C 11 中 没有任何异常规范的析构函数隐式声明为noexcept 这是对 C 03 的更改 因此 在 C 03 中从析构函数抛出的代码在 C 11 中仍然可以正常编译 但一旦尝试从这样的析构函数抛出 就会在运行时崩溃 既然这样的代码不
  • 使子进程超时

    我意识到这可能是重复的使用带有超时的模块 子进程 https stackoverflow com questions 1191374 subprocess with timeout 如果是的话 我很抱歉 只是想澄清一些事情 我正在创建一个子
  • 如何在其他条件下在 pandas 中创建滚动窗口

    我有一个包含 2 列的数据框 df pd DataFrame np random randint 0 100 size 100 2 columns list AB A B 0 11 10 1 61 30 2 24 54 3 47 52 4
  • 重新打开 LibGdx Android APP 无法正确绘制屏幕

    I have created an android App using the LibGdx framework Whenever I flash it to my android device it works perfectly But
  • 如何在 Javascript 中将波斯 (Jalali) 日期转换为其他 18 个日历日期,无需外部库或复杂的天文方程

    TL DR 要求是能够采用波斯 Jalali 日期 也称为波斯阳历回历 例如Esfand 19 1400 i e 12 19 1400 并将其转换为其他日历 公历 伊斯兰历 中国历 希伯来历等 无需使用外部库或复杂的天文方程 并且不使用新日
  • 特征选择和预测

    from sklearn feature selection import RFECV from sklearn metrics import accuracy score from sklearn model selection impo
  • 为什么 MinGW 没有出现在 Eclipse/Indigo CDT 工具链列表中?

    我正在尝试在 Windows 7 桌面上运行的 Eclipse Indigo 上设置 C C 开发环境 我已将 MinGW 安装到我的 C 盘按照 eclipse org 上的说明 http help eclipse org indigo
  • 从十六进制格式获取原始密钥

    这是用于 AES 加密的密钥的十六进制格式 00010203050607080A0B0C0D0F101112 我可以从中生成原始 SecretKey 格式或字节数组吗 如果是这样怎么办 您可以使用 Apache Commons Codec
  • 如何在 BaseAdapter 中使用 getFilter() 过滤 ListView

    在我的应用程序中 我创建了一个自定义列表视图 我想实现一个过滤器 以便可以根据 EditText 中输入的文本过滤列表 我使用 BaseAdapter 作为单独的类 并在我的主活动中调用该类 我还在我的主要活动中实现了 addTextCha
  • RecognizerIntent.ACTION_RECOGNIZE_SPEECH 在新的 Android 设备中不起作用

    以下是我的语音识别代码 对于最新的设备和平板电脑 它显示 识别器不存在 请帮助我如何修复它 public void startMyVoice Intent intent new Intent RecognizerIntent ACTION
  • 无法连接到服务器:PostgreSQL -Heroku

    我在 Heroku 中部署了一个 Django 应用程序 最初 它运行在SQLite3数据库 后来我升级到PostgreSQL 应用程序与本地设置完美配合 但是当我将文件推送到服务器时 它的行为不符合预期 当我登录 django admin
  • 使用PreparedStatement时出现com.mysql.jdbc.exceptions.MySQLSyntaxErrorException

    我正在尝试执行一个查询 该查询返回一个学生 其姓名和姓氏连接起来等于搜索键参数 为此 我在我的班级中执行此操作 管理与我的数据库相关的任何内容Student class 执行查询时 我收到以下错误 com mysql jdbc except
  • 如何在经典 ASP 中延迟响应

    我有一个运行 Classic ASP 的站点 在登录页面上我想延迟对失败登录尝试的响应 大约 10 秒 以帮助防止对帐户的暴力攻击 快速的谷歌搜索显示了一些使用 SQL 服务器查询的黑客攻击 这些攻击看起来很厉害 在经典的asp中有没有好的
  • 周数和年份组合

    过去有人问过有关 Excel 中的周数和年份的几个问题 但是 我有一个特定问题 但找不到答案 我正在尝试以 YYWW 格式获取年份和周数的组合 例如 1752 或 1801 基于日期列 如下所示 Date Year Week 01 01 2
  • BroadcastReceiver 无法访问互联网

    我的广播接收器遇到问题 我设置了早上 6 点的闹钟 它必须触发我的广播接收器 它只需要从互联网下载一些数据并进行处理 例如 如果我将闹钟设置为下午 3 点 效果就很好 但问题是早上6点 由于没有网络连接 下载失败 我在尝试下载之前执行部分唤