android——服务JobService
JobService是Android L时候官方新增的组件,适用于需要特定条件才执行后台任务的场景。由系统统一管理和调度,在特定场景下使用JobService更加灵活和省心,相当于是Service的加强或者优化。
JobService是JobScheduler的回调,是安排的Job请求的实际处理类。需要我们覆写onStartJob (JobParameters)方法,并在里面实现实际的任务逻辑。因为JobService的执行是在APP的主线程里响应的,所以必须提供额外的异步逻辑去执行这些任务。
代码如下:
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.job.JobInfo;
import android.app.job.JobParameters;
import android.app.job.JobScheduler;
import android.app.job.JobService;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Build;public class MyJobService extends JobService {private static final int JOB_ID = 1;private static final long INTERVAL_MILLIS = 10 * 1000; // 10 seconds@Overridepublic boolean onStartJob(JobParameters params) {// 在这里执行你的后台任务System.out.println("==Job started==");scheduleJob(getApplicationContext()); // 重新调度作业return false;}@Overridepublic boolean onStopJob(JobParameters params) {// 在这里取消你的后台任务System.out.println("Job stopped");return false;}public static void scheduleJob(Context context) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);ComponentName componentName = new ComponentName(context, MyJobService.class);JobInfo jobInfo = new JobInfo.Builder(JOB_ID, componentName).setMinimumLatency(INTERVAL_MILLIS).setOverrideDeadline(INTERVAL_MILLIS).setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY).build();jobScheduler.schedule(jobInfo);} else {// 在 Android N 以下版本,使用 AlarmManager 实现定时任务Intent intent = new Intent(context, MyJobService.class);PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000, pendingIntent);}}
}
在activity里面调用:
MyJobService.scheduleJob(this)
相关文章:
android——服务JobService
JobService是Android L时候官方新增的组件,适用于需要特定条件才执行后台任务的场景。由系统统一管理和调度,在特定场景下使用JobService更加灵活和省心,相当于是Service的加强或者优化。 JobService是JobScheduler的回调,是安排的…...
一文讲清楚redis的线程池jedis
背景 在shigen实习的时候,遇到了日志系统的性能优化问题,当时的优化点就是:使用redis的线程池,实现并发状态下的性能优化。但是找了很多的技术方案,发现redis的线程池配置起来比较麻烦。正巧,这个周末shig…...
备战面试每日一题
1.如何理解this? this表示的是函数运行时自动生成的一个内部对象,只能在函数内部使用,总是指向调用它的对象。 this是在运行时进行绑定的,并不是在编写的时候绑定,它的上下文取决于函数调用时的各种条件。this的绑定…...
【嵌入式数据库之sqlite3】
目录 一.数据库基本概念(理解) 1.数据 2.数据库 二.常用的数据的数据库(了解) 1.大型数据库 2.中型数据库 3.小型数据库 三.基于嵌入式的数据库(了解) 四.SQLite基础(了解)…...
Android 9.0 pms中关于启动app时获取app的ActivityInfo信息相关源码分析
1.前言 在android9.0的系统rom定制化开发中,在对于app启动时,在进行系统中,通过Launcher调用pms来查询app的相关ActivityInfo的相关信息,然后调用 ams来启动activity,这篇来分析pms中获取app的ActivityInfo的相关信息的相关源码分析 2.pms中关于启动app时获取app的Activ…...
华为数通方向HCIP-DataCom H12-821题库(单选题:321-340)
第321题 BGP的Open报文是用于建立对等体连接的,以下哪一项不属于Open报文中携带的参数信息? A、发送者的Router ID B、AS号 C、BGP版本号 D、TCP端口号 答案:D 解析:以下是BGP的Open报文: 第322题 在建立BGP对等体的过程中,OpenSent状态表明BGP等待的Open报文 并对收…...
《TCP/IP网络编程》阅读笔记--基于TCP的服务器端/客户端
目录 1--TCP/IP协议栈 2--TCP服务器端默认函数调用顺序 3--TCP客户端的默认函数调用顺序 4--Linux实现迭代回声服务器端/客户端 5--Windows实现迭代回声服务器端/客户端 6--TCP原理 7--Windows实现计算器服务器端/客户端 1--TCP/IP协议栈 TCP/IP协议栈共分 4 层…...
【每日一题】43. 字符串相乘
43. 字符串相乘 - 力扣(LeetCode) 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。 示例…...
机器学习——K最近邻算法(KNN)
机器学习——K最近邻算法(KNN) 文章目录 前言一、原理二、距离度量方法2.1. 欧氏距离2.2. 曼哈顿距离2.3. 闵可夫斯基距离2.4. 余弦相似度2.5. 切比雪夫距离2.6. 马哈拉诺比斯距离2.7. 汉明距离 三、在MD编辑器中输入数学公式(额外࿰…...
同步FIFO的verilog实现(1)——计数法
一、FIFO概述 1、FIFO的定义 FIFO是英文First-In-First-Out的缩写,是一种先入先出的数据缓冲器,与一般的存储器的区别在于没有地址线, 使用起来简单,缺点是只能顺序读写数据,其数据地址由内部读写指针自动加1完成&…...
python正则表达式笔记1
最近工作中经常用到正则表达式处理数据,慢慢发现了正则表达式的强大功能,尤其在数据处理工作中,记录下来分享给大家。 一、 正则表达式语法介绍 正则表达式(或 RE)指定了一组与之匹配的字符串;模块内的函…...
YOLO目标检测——口罩规范佩戴数据集+已标注xml和txt格式标签下载分享
实际项目应用:目标检测口罩佩戴检测数据集的应用场景涵盖了公共场所监控、疫情防控管理、安全管理与控制以及人员统计和分析等领域。这些应用场景可以帮助相关部门和机构更好地管理口罩佩戴情况,提高公共卫生和安全水平,保障人们的健康和安全…...
Android 13 - Media框架(9)- NuPlayer::Decoder
这一节我们将了解 NuPlayer::Decoder,学习如何将 MediaCodec wrap 成一个强大的 Decoder。这一节会提前讲到 MediaCodec 相关的内容,如果看不大懂可以先跳过此篇。原先觉得 Decoder 部分简单,越读越发现自己的无知,Android 源码真…...
23.09.5 《CLR via C#》 笔记5
第六章 类型和成员基础 类型可以定义0或多个以下成员:常量、字段、实例构造器、类型构造器、方法、操作符重载、转换操作符、属性、事件、类型类型的可见性分为public和internal(默认)C#中,成员的可访问性分为private、protected、internal、protected …...
laravel部署api项目遇到问题总结
laravel线上部署问题 一、Ubuntu远程Mysql 61“Connection refused”二、Ubuntu更新php8三、线上部署Permission denied3.1、部署完之后访问域名出现报错:3.2、The /bootstrap/cache directory must be present and writable. 四、图片访问404五、git部署线上文件 一…...
lintcode 1646 · 合法组合【字符串DFS, vip 中等 好题】
题目 https://www.lintcode.com/problem/1646 给一个单词s,和一个字符串集合str。这个单词每次去掉一个字母,直到剩下最后一个字母。求验证是否存在一种删除的顺序,这个顺序下所有的单词都在str中。例如单词是’abc’,字符串集合是{‘a’,’…...
【多线程】线程安全 问题
线程安全 问题 一. 线程不安全的典型例子二. 线程安全的概念三. 线程不安全的原因1. 线程调度的抢占式执行2. 修改共享数据3. 原子性4. 内存可见性5. 指令重排序 一. 线程不安全的典型例子 class ThreadDemo {static class Counter {public int count 0;void increase() {cou…...
【用unity实现100个游戏之11】复刻经典消消乐游戏
文章目录 前言开始项目开始一、方块网格生成二、方块交换三、添加交换的动画效果四、水平消除检测五、垂直消除检测六、完善删除功能七、效果优化(移动方块后再进行消除检测)八、方块下落十、方块填充十一、后续 源码参考完结 前言 欢迎来到经典消消乐游…...
若依cloud 修改包名等
一、项目的项目名。 先改pom 然后在重命名文件 1、 修改主pom.xml <artifactId>ruoyi-api</artifactId> 缓存 <artifactId>zxf-api</artifactId> <groupId>com.ruoyi</groupId> <groupId>com.zhixiaofeng</groupId> 2、…...
健康系统练习
健康系统 项目建构: 前后端分离,前端vue3,后端Java,springboot做跨域处理,前端将在vscode中 的tomcat下部署,后端将在ideal中集成的tomcat中部署 创建项目工程在ideal中直接选用springi…创建,…...
如何让Windows任务栏焕然一新?TranslucentTB给你答案
如何让Windows任务栏焕然一新?TranslucentTB给你答案 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 您是否曾对Windows系统一…...
Axure RP 10实战:3分钟搞定Tab切换效果(附交互样式设置技巧)
Axure RP 10高级Tab切换效果:从基础实现到专业级交互设计 在当今快节奏的数字化产品设计领域,Tab切换作为最常见的用户界面元素之一,其交互体验的优劣直接影响用户对产品的第一印象。Axure RP 10作为行业领先的原型设计工具,提供了…...
智能客服体验问题诊断:从技术架构到优化实践
智能客服体验问题诊断:从技术架构到优化实践 智能客服作为企业与用户交互的重要窗口,其体验好坏直接影响用户满意度和业务转化率。一个响应迟钝、答非所问的客服机器人,不仅无法解决问题,反而会加剧用户的不满。本文将从一个开发者…...
利用快马AI三分钟生成Python哈希表原型,快速验证数据存储方案
今天在做一个数据处理的小项目时,突然需要快速验证一个数据存储方案。想到哈希表这种高效的数据结构正好适合,但自己从头实现又太费时间。正好最近在用InsCode(快马)平台,发现它的AI辅助功能可以快速生成可运行的原型代码,于是尝试…...
网络协议与文件系统,小车亮灯实验
网络协议与文件系统 一、项目背景二、项目核心目标与环境二者协同工作流程 四、Linux文件系统与设备操作实战五、完整Python代码实现配置项(根据自身硬件调整)安全退出函数:捕获CtrlC,关闭LED后退出注册CtrlC信号,绑定…...
告别用人“开盲盒”|江湖背调定义全生命周期风控范式
企业用人别踩坑!传统单次背调只有入口安检,无法应对员工在职动态风险,漏洞百出江湖背调以“雇前可信、在职可控”,正式定义全生命周期用工风控范式,筑牢从招聘到离职全链路安全屏障!传统背调vs全生命周期风…...
避坑指南:三自由度机械臂DH参数建模与逆解求解的那些‘坑’(从理论到Matlab/Python验证)
三自由度机械臂运动学建模实战:从DH参数陷阱到逆解验证 机械臂运动学建模是机器人学中最基础却最容易踩坑的领域之一。很多工程师和学生在理论学习阶段看似掌握了DH参数法和正逆运动学推导,但一旦动手实践,总会遇到各种"诡异"的问题…...
【Godot】【整活】用 50 行代码做一个“抖音同款解压小游戏”(附源码)
最近短视频平台上经常能看到一种“解压小游戏”: 点一下 → 爆炸特效 💥 滑一下 → 连锁反应 🎯 满屏粒子 → 爽感拉满 😎 这些游戏的核心特点只有三个字: 👉 简单、直接、上头 今天我们就用 Godot 4,只用 约 50 行代码,实现一个“点击爆炸”的解压小游戏。 精…...
PHP 反序列化漏洞深度解析:从原理利用到 allowed_classes 防御实战
PHP 反序列化漏洞深度解析:从原理利用到 allowed_classes 防御实战在 PHP 安全领域,反序列化漏洞(Deserialization Vulnerability) 长期占据高危漏洞的榜首。它允许攻击者在服务器上执行任意代码、删除文件、甚至获取服务器最高权…...
如何快速将Blender模型导入Unreal Engine?免费Datasmith插件完整指南
如何快速将Blender模型导入Unreal Engine?免费Datasmith插件完整指南 【免费下载链接】bl_datasmith Blender addon to export UE4 Datasmith format 项目地址: https://gitcode.com/gh_mirrors/bl/bl_datasmith Blender Datasmith Export是一款开源免费的Bl…...
