每天在应用程序未打开时运行代码

2024-04-01

我想每天(每 24 小时)运行一些代码。问题是如果用户不打开应用程序。如何在应用程序未打开时运行代码?


在android中运行后台周期性任务你可以使用多种方法,其中一些是:

  1. JobScheduler(仅适用于 API 21 或更高版本)

Android 在 API 21 上添加了这个类,这里​​的文档是link https://developer.android.com/reference/android/app/job/JobScheduler.html.

  1. JobSchedulerCompat - API 11 或更高版本的 JobScheduler 库的向后移植

您可以找到有关图书馆的一切here https://github.com/evant/JobSchedulerCompat.

  1. 使用警报管理器处理周期性任务

您还可以使用AlarmManager安排周期性任务。发布了实现它的完整文章here http://www.sitepoint.com/scheduling-background-tasks-android/.

  1. 使用GCM(Google Cloud Messaging)网络管理器来安排定期任务。

你可以看看这个文档link https://developers.google.com/cloud-messaging/network-manager来实施它。

使用 GCM 网络管理器的定期任务示例

在项目级别的 build.gradle 中添加依赖项。

compile 'com.google.android.gms:play-services-gcm:7.5.0'

创建一个扩展为的 java 类GcmTaskService

public class BackgroundTaskHandler extends GcmTaskService {

    public BackgroundTaskHandler() {
    }

    @Override
    public int onRunTask(TaskParams taskParams) {
         //Your periodic code here
    }
}

在manifest.xml中声明服务

    <service
        android:name=".BackgroundTaskHandler"
        android:exported="true"
        android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE">
        <intent-filter>
            <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" />
        </intent-filter>
    </service>

现在将任何班级的定期任务安排为:-

    String tag = "periodic";

    GcmNetworkManager mScheduler = GcmNetworkManager.getInstance(getApplicationContext());

    long periodSecs = 60L;// 1 minute

    PeriodicTask periodic = new PeriodicTask.Builder()
            .setService(BackgroundTaskHandler.class)
            .setPeriod(periodSecs)
            .setTag(tag)
            .setPersisted(true)
            .setUpdateCurrent(true).setRequiredNetwork(com.google.android.gms.gcm.Task.NETWORK_STATE_CONNECTED)
            .build();
    mScheduler.schedule(periodic);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每天在应用程序未打开时运行代码 的相关文章

  • 如何在 Android 中更改 Drawable 的颜色?

    我正在开发一个 Android 应用程序 并且我有一个从源图像加载的可绘制对象 在此图像上 我想将所有白色像素转换为不同的颜色 例如蓝色 然后缓存生成的 Drawable 对象 以便稍后使用它 举例来说 假设我有一个 20x20 PNG 文
  • 如何替换 Android 中已弃用的 Bundle/Argument get(key) 调用

    我有以下扩展函数 允许我在应用程序活动和片段之间传递捆绑数据项 inline fun
  • 应用程序在加载 xml 布局文件的主线程中做了太多工作

    我正在制作一个 9x9 数独网格 其中 81 个单元格本身就是一个 3x3 网格 单个细胞看起来像这样 1 2 3 4 5 6 7 8 9 每个数字代表该单元格的铅笔注释 我有一个名为 cell layout xml 的文件 表示这种 3x
  • 在 Android 上使用 AT 命令与调制解调器对话

    我试图与三星 Galaxy s2 plus 和华为 p1 xl u9200 调制解调器发送 AT 命令 但无法得到任何结果 我使用 adb shell 发送命令并使用 logcat 查看日志 在三星 当我执行 cat 时 proc tty
  • 如何在android中显示对话框之外的图像?

    我试图在对话框片段的顶部显示配置文件图像 一半在图像之外 我在下面附加了示例对话框 就像那样 并尝试了旧 Stackoverflow 解决方案中的所有 FrameLayout 协作 但我无法存档此内容 请给我正确的解决方案 谢谢 Updat
  • 使用 Fragment 在工具栏中实现 SearchView

    当前情况 我的应用程序主页由导航抽屉组成 因此我将视图作为片段加载 我的工具栏中也有搜索图标 我在中实现了它menu xml 下一步我实施了SearchView通过以下问题的答案来获取搜索图标在工具栏中实现搜索 https stackove
  • 如何通过我的活动在 Android 中设置铃声?

    我正在尝试找到一种方法来通过 Android 活动中的代码设置新的默认铃声 我已经将铃声下载到bytearray 最后 我设法将默认铃声设置为我下载的铃声 下面不包含下载代码 仅包含将其设置为默认铃声所需的代码 File k new Fil
  • 覆盖 Android 中的电源按钮

    我正在开发一个应用程序 其中我需要在按下电源按钮时执行一个操作 但不幸的是我无法处理按下电源按钮时的操作 我尝试使用 onKeyDown 和dispatchKeyEvent 方法 但似乎没有任何效果 任何人都可以建议我解决这个问题的任何其他
  • ADB TCPIP 连接问题

    我有两台 Galaxy S3 其中一个已扎根 另一个则未扎根 因此 当我尝试通过本地网络连接它们时 计算机可以看到已root的计算机 但是正常的就卡在tcpip这一步了 所以 我写 adb tcpip 5555 It says restar
  • 如何禁用操作栏上“向上”按钮的翻转?

    背景 我做了一个 应用程序管理器 https play google com store apps details id com lb app manager 替代应用程序 我希望添加 RTL 从右到左 语言的翻译 因为我知道在某些 And
  • Android -room 持久库 - DAO 调用是异步的,因此如何获取回调?

    从我读到的Room 不允许您在主线程上发出数据库查询 因为可能会导致主线程延迟 所以想象一下我正在尝试更新 UI 主线程上的文本视图 其中一些数据我将如何得到回调 让我给你举个例子 想象一下 我想将我的业务模型数据存储到一个名为 事件 的对
  • Android蓝牙java.io.IOException:bt套接字已关闭,读取返回:-1

    我正在尝试编写一个代码 仅连接到运行 Android 5 0 KitKat 的设备上的 目前 唯一配对的设备 无论我尝试了多少方法 我仍然会收到此错误 这是我尝试过的最后一个代码 它似乎完成了我看到人们报告为成功的所有事情 有人能指出我做错
  • 是否可以通过 Android 应用程序来录音?

    我是一名开发人员 希望创建一个 Android 应用程序来记录电话 这是出于我个人的需要 为了我自己的目的和记录而记录电话 是否有可能做到这一点 是否可以访问麦克风以及通过扬声器发出的声音 我对 Android 开发有点陌生 所以请耐心等待
  • 在android中,将相机预览流到视图上

    我想将 Android 相机的相机预览流式传输到视图上 目的是随后使用 onDraw 将各种内容添加到视图中 我不需要随时实际捕捉图像 它不必是最高质量或每秒最大数量的帧 有谁知道如何做到这一点 将其添加到您的 xml 中
  • 如何为我的 Android Market APK 创建证书?

    我想将我的第一个 APK 应用程序上传到 Android Market 但我收到了此错误 顺便说一下 在 stackoverflow 中搜索时并没有引导我找到正确的链接 市场不接受使用调试证书签名的 APK 创建有效期至少 50 年的新证书
  • Android 中的库可以有自己的意图过滤器吗?

    我想开发一个可以包含在其他 Android 应用程序中的库来拦截某些类型的意图 是否可以 我创建了一个库和一个测试项目 两者都有自己的AndroidManifest xml文件 在库的清单中 我为操作 TEST 定义了一个意图过滤器 但是
  • 离子初始加载时间

    我正在使用 Ionic 构建一个简单的应用程序 但我的应用程序在冷启动时的初始加载时间方面存在性能问题 这是我所做的 collection repeat 代替带有 track by 的 ng repeat 原生滚动 overflow scr
  • 如何在android中通过蓝牙向配对设备发送短信?

    在我的应用程序中 我想通过蓝牙发送和接收短信 我可以在列表视图中看到配对设备名称和地址的列表 但是当我尝试向配对设备发送文本时 什么也没有发生 在其他设备中没有收到文本 这是我向配对设备发送消息的代码 private void sendDa
  • ECDH使用Android KeyStore生成私钥

    我正在尝试使用 Android KeyStore Provider 生成的私有文件在 Android 中实现 ECDH public byte ecdh PublicKey otherPubKey throws Exception try
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向

随机推荐

  • JavaFX 中的字段验证[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我使用 fxml 创建了一份注册表单 现在我想实现字段验证功能 我正在尝试实现 TextField 的验证 但仍然没有得到它 不幸的是
  • CSS(位置:绝对+左:50%=最大宽度:50%)?

    我正在开发一个网站 但遇到了临时问题 我有一个div with CSS像这样 box position absolute width auto max width 75 left 50 transform translate 50 0 ms
  • Rails:如何添加目标空白的 link_to

    我是 Rails 3 的新手 我想将 target gt blank 添加到下面的 link to helper link to GOOGLE http www google com class btn btn large btn prim
  • 每次都会出现权限屏幕

    我想让我的 WinForms 应用程序使用 Microsoft 帐户的单点登录 SSO 功能 我创建了一个LiveApp https account live com developers applications我可以使用 LiveSDK
  • 我们如何在 Java 中进行异步 REST api 调用?

    我正在使用 Spring RestTemplate 并且想要调用另一个不返回任何响应正文的服务 所以 我不想等待回复 因此 只需即发即忘 然后继续剩余的代码 我正在考虑创建一个新线程来执行此操作 但不确定什么是正确的方法 如果您使用Java
  • 拉普拉斯滤波器是如何计算的?

    我不太明白他们是如何得出导数方程的 有人可以详细解释一下 甚至可以提供一个有足够数学解释的链接吗 拉普拉斯滤波器看起来像 拉普拉斯先生提出了这个方程 这就是拉普拉斯算子的简单定义 二阶导数之和 您也可以将其视为海森矩阵 https en w
  • VS 2015 Azure 发布向导不处理 ARM 创建的资源吗?

    我可以从发布向导中看到 ARM 云服务 但在使用管理员帐户时看不到 ARM 存储 我可以使用管理员帐户发布到 ARM 云服务 但必须指定 ASM 存储帐户 当使用 RBAC 访问权限仅限于包含上述云服务的资源组的帐户时 发布向导会提示云服务
  • 当从另一个函数调用 mongodb 时如何模拟 mongodb?

    我在嘲笑 mongodb 时需要帮助 我在用蒙戈莫克 https github com mongomock mongomock模拟 mongodb 我的项目结构是 my mongo py 代码 py my test py my mongo
  • MVC 控制器操作 - 处理 POST 和 GET,无需重复代码

    我一直在开发这个 MVC 3 Razor 应用程序 并且通常将视图模型用于我的视图 我的相当多的视图模型包含的信息不仅仅是我在表单中与之交互的特定实体 因此 我的 GET 操作处理程序将初始化视图模型并为每个属性提供预期值等 在我的 POS
  • R、Python 或 Octave:具有置信区间的经验分位数(逆 cdf)?

    我正在寻找一个返回样本分位数的内置函数和估计的置信区间在 MATLAB 以外的地方 MATLAB 的ecdf做这个 我猜 R 有这个内置功能 只是我还没有找到它 如果您有任何独立代码可以执行此操作 您也可以在此处指出它 尽管我希望找到作为更
  • 如何将多个 CSV 文件添加到 Kedro 的目录中?

    我有数百个 CSV 文件想要以类似方式处理 为了简单起见 我们可以假设它们都在 data 01 raw like data 01 raw 1 csv data 02 raw 2 csv 等 我宁愿不给每个文件一个不同的名称 并在构建管道时单
  • Wildfly 10.1 部署后停止部署

    我正在部署一个具有多个独立的 Web 应用程序war and ear 将文件发送到 Wildfly 10 1 服务器 我所做的是这样的 我清理deployments data content and tmp文件夹 然后复制所有必需的war
  • JQUERY AJAX - 如果成功则更改 $(this) 的类

    我有一个div 在该 div 内我有多个元素 有些元素具有 myClass 类 我也有一个按钮 单击时 foreach 循环会针对 div 中具有类 myClass 的每个元素运行 为每个元素发送一个ajaxCall 这些元素的文本颜色默认
  • 模型中的 Ruby on Rails 增量计数器

    我正在尝试从另一个模型增加我的用户表中的计数器 class Count lt ActiveRecord Base belongs to user after create update count def update count user
  • SonarQube 规则在启动时被禁用

    我最初在我的开发机器上设置了一个 Sonar 服务器 但后来在官方 Linux 机器上创建了一个服务器 目的是停止使用开发机器 在此过渡期间 我可能让两台服务器同时运行 指向同一个声纳数据库 现在我看到一些奇怪的行为 本地服务器运行良好 我
  • 持续交付中的生产数据迁移模式

    持续交付中生产中的关系数据库 和模式 迁移模式是什么 在许多传统开发中 DBA 从当前发布周期中创建的许多较小脚本中安排一个大型迁移脚本 但在 CD 中 开发人员可能希望立即将更改推送到生产中 而不是等待与其他脚本一起编译它们 我知道 Ra
  • 无法加载 Exchange powershell 管理单元:“Microsoft.Exchange.Data.Directory.Globals”的类型初始值设定项引发异常

    我有以下代码 用于创建一个加载了 Exchange 2010 管理单元的 PowerShell 运行空间 Dim runspaceConfig RunspaceConfiguration Create Dim snapInException
  • NodeJS 中的客户端 websocket 证书

    我有一个 NodeJS websocket 客户端应用程序 使用ws https www npmjs com package ws https www npmjs com package ws 这个 NodeJS 应用程序作为客户端连接到
  • Android:AlertDialog - 用户单击其他地方[重复]

    这个问题在这里已经有答案了 我有一个Alert dialog有 2 个按钮 是 否 如果用户点击yes or no警报对话框表现正常并进入点击方法 但是如果用户单击或触摸警报对话框之外的某个地方 它就会消失 并且不会发生任何事情 有什么方法
  • 每天在应用程序未打开时运行代码

    我想每天 每 24 小时 运行一些代码 问题是如果用户不打开应用程序 如何在应用程序未打开时运行代码 在android中运行后台周期性任务你可以使用多种方法 其中一些是 JobScheduler 仅适用于 API 21 或更高版本 Andr