android前台服务

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。
专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。
未经允许不得转载

目录

  • 一、导读
  • 二、使用
    • 2.1 添加权限
    • 2.2 新建一个服务
    • 2.3 构建通知消息
    • 2.4 启动与停止服务
  • 三、 推荐阅读

在这里插入图片描述

一、导读

我们继续总结学习基础知识,温故知新。

今天记录下android前台服务(Foreground Service),我们知道服务可以分成好几类,

前台服务(Foreground Service)是一种在 Android 应用程序中执行长时间运行任务的服务类型。
与普通的后台服务不同,前台服务在系统通知栏中显示一个可见的通知。

二、使用

前台服务通常用于执行用户可感知的任务,例如播放音乐、下载文件、进行定位更新等。
通过将服务置于前台状态并显示通知,前台服务可以避免被系统误认为是低优先级的后台任务,从而更好地确保服务的稳定运行。
但是,需要注意的是,使用前台服务可能会增加应用程序的电池消耗,因为持续运行任务需要持续的系统资源。

我们就一起来看看如何使用一个前台服务:

2.1 添加权限

<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

不添加的话就会报错啦
java.lang.SecurityException: Permission Denial:
startForeground from pid=2, uid=1 requires android.permission.FOREGROUND_SERVICE.

2.2 新建一个服务


public class DataService extends Service {ServiceBinder binder;public DataService() {}public void onCreate() {}@Overridepublic IBinder onBind(Intent intent) {if(binder == null) {binder = new ServiceBinder(this);}return binder;}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {handler = new InnerHandler(this);initPos();return super.onStartCommand(intent, flags, startId);}}

2.3 构建通知消息

构建通知消息,一般在服务启动时就构建一个通知栏出来,在onCreate 、onStartCommand都行

public int onStartCommand(Intent intent, int flags, int startId) {Notification.Builder builder = new Notification.Builder(this.getApplicationContext()); //获取一个Notification构造器Intent nfIntent = new Intent(this, MainActivity.class);builder.setContentIntent(PendingIntent.getActivity(this, 0, nfIntent, 0)) // 设置PendingIntent.setLargeIcon(BitmapFactory.decodeResource(this.getResources(),R.mipmap.ic_large)) // 设置下拉列表中的图标(大图标).setContentTitle("下拉列表中的Title") // 设置下拉列表里的标题.setSmallIcon(R.mipmap.ic_launcher) // 设置状态栏内的小图标.setContentText("要显示的内容") // 设置上下文内容.setWhen(System.currentTimeMillis()); // 设置该通知发生的时间Notification notification = builder.build(); // 获取构建好的Notificationnotification.defaults = Notification.DEFAULT_SOUND; //设置为默认的声音startForeground(NOTIFICATION_ID, notification);return super.onStartCommand(intent, flags, startId);}

Notification创建完后,就调用 startForeground(NOTIFICATION_ID, notification);让Android服务运行在前台。

2.4 启动与停止服务

startForeground(NOTIFICATION_ID, notification);让Android服务运行在前台。
stopForeground(true);// 停止前台服务–参数:表示是否移除之前的通知

三、 推荐阅读

Java 专栏

SQL 专栏

数据结构与算法

Android学习专栏

未经允许不得转载

ddd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/50146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据丢失不用愁!这四款数据恢复大师免费版助你找回珍贵回忆

我们在办公或者是生活中常常会遇到不小心将手机设备或者计算机当中的重要数据误删除/格式化/或其他不小心丢失的情况&#xff0c;但是不用紧张&#xff0c;这篇文章就是给大家分享如何恢复他们&#xff0c;以下带来除易我数据恢复外的其他好用的数据恢复软件&#xff1a; 第一…

python windows环境部署

在官网安装www.python.org linux系统的只能编译安装 windows的可以直接安装 这里是windows安装 .3.9.6版本 一直下一步就可以&#xff0c;然后鼠标右键在按住shift用终端打开 输入py或者python验证一下是否安装成功 打开目录文件夹 在里面新建一下pip的文件夹&#xff0c;里…

SpringCloud+Vue3多对多,多表联查

♥️作者&#xff1a;小宋1021 &#x1f935;‍♂️个人主页&#xff1a;小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识&#xff0c;和大家一起努力呀&#xff01;&#xff01;&#xff01; &#x1f388;&#x1f388;加油&#xff01; 加油&#xff01…

黑马头条vue2.0项目实战(二)——登录注册功能的实现

1. 布局结构 目标 能实现登录页面的布局 能实现基本登录功能 能掌握 Vant 中 Toast 提示组件的使用 能理解 API 请求模块的封装 能理解发送验证码的实现思路 能理解 Vant Form 实现表单验证的使用 这里主要使用到三个 Vant 组件&#xff1a; NavBar 导航栏 Form 表单 F…

分布式锁-数据库锁

本文主要分享如何使用数据库乐观锁的方案&#xff0c;实现分布式定时任务抢锁执行任务的场景&#xff0c;避免重复执行任务。 案例技术&#xff1a;OracleSpringBootxxl-Job 环境准备 xxl-Job部署请移步&#xff1a;Springxxl-joboracle_xxl-job oracle配置-CSDN博客 SpringB…

人工智能算法工程师(高级)课程7-图像分割项目之DeepLab模型的搭建与代码详解

大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(高级)课程7-图像分割项目之DeepLab模型的搭建与代码详解。本文将详细介绍DeepLab模型的关键组成部分,包括Image Pyramid、Encoder-Decoder、SPP模型和ASPP模型。我们将从数学原理出发,配合LaTeX公式,并使用PyTorc…

关于珞石机器人二次开发SDK的posture函数的算法RX RY RZ纠正 C#

在珞石SDK二次开发的函数钟&#xff0c;获取当前机器人位姿的函数posture函数在输出时会发现数据不正确&#xff0c;与示教器数据不一致。 其中第一个数据正确 第二三各数据为相反 第四五六各数据为弧度制 转换方法为(弧度/PI)*180度 然后发现第四个数据还要加上180度 第五…

docker Docs相关使用文档链接

Docker Docshttps://docs.docker.com/ docker compose | Docker Docshttps://docs.docker.com/reference/cli/docker/compose/docker | Docker Docshttps://docs.docker.com/reference/cli/docker/

工作很难受,还要不要继续留在职场上?

先说结论&#xff1a;我非常赞同大家离开职场 虽然小编现实的工作是有关于人力资源的&#xff0c;高级点叫做猎头&#xff0c;低俗点讲就叫“人贩子” 原因可能和其他人不太一样&#xff0c;大家自行理解 1.现在的社会资源太少&#xff0c;“蛋糕”太小 大家要明白最重要的…

Ethernet

目录 1. Physical Layer(PHY)2. MAC2.1. MAC帧格式2.2. MAC地址与IP地址3. RGMII接口FPGA实现以太网(一)——以太网简介 以太网(Ethernet)是指遵守 IEEE 802.3 标准组成的局域网通信标准, IEEE 802.3 标准规定的主要是OSI参考模型中的物理层(PHY)和数据链路层中的介质访问控…

【HZHY-AI300G智能盒试用连载体验】设置RKNN的开发环境

目录 安装RKNN工具 安装pip3 安装RKNN Toolkit Lite2 安装RKNPU2运行库 本文首发于电子发烧友论坛&#xff1a;【新提醒】【HZHY-AI300G智能盒试用连载体验】 智能工业互联网网关 - 北京合众恒跃科技有限公司 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com) 前…

kubevirt中disk的bus类型

在 KubeVirt 中&#xff0c;定义虚拟机中磁盘&#xff08;disk&#xff09;的时候&#xff0c;可以指定不同的总线&#xff08;bus&#xff09;类型&#xff0c;以确定磁盘如何与虚拟机中的虚拟硬件进行通信。以下是 KubeVirt 中常见的磁盘总线类型&#xff1a; Virtio 类型: v…

go语言day20 使用gin框架获取参数 使用自定义的logger记录日志

Golang 操作 Logger、Zap Logger 日志_golang zap-CSDN博客 一、 从控制器中获取参数的几种形式 1&#xff09; 页面请求url直接拼接参数。 2&#xff09; 页面请求提交form表单 3&#xff09; 页面请求发送json数据&#xff0c;使用上下文对象c的BindJSON()方法接收数据…

SQL Server审计:深入掌握SQL Server Audit的高级应用

SQL Server审计&#xff1a;深入掌握SQL Server Audit的高级应用 SQL Server提供了强大的审计功能&#xff0c;允许数据库管理员(DBA)跟踪和记录数据库活动&#xff0c;确保数据库的安全性和合规性。SQL Server Audit是实现这一目的的关键工具之一。本文将详细介绍如何在SQL S…

CI/CD:Job failed: execution took longer than 1h0m0s seconds

简介&#xff1a;当在CI/CD配置运行Gitlab-runner流水线中&#xff0c;一般默认情况下&#xff0c;Job的执行时间默认为1小时&#xff0c;如果超出1小时&#xff0c;任务会中断。 历史攻略&#xff1a; 定时任务&#xff1a;Jenkins 容器化CICDLocust性能压测 容器化CICDSo…

Python学习和面试中的常见问题及答案

整理了一些关于Python和机器学习算法的高级问题及其详细答案。这些问题涵盖了多个方面&#xff0c;包括数据处理、模型训练、评估、优化和实际应用。 一、Python 编程问题 解释Python中的装饰器&#xff08;Decorators&#xff09;是什么&#xff1f;它们的作用是什么&#xf…

【C++ —— 认识哈希和unordered_set、unordered_map的介绍及模拟】

认识哈希和unordered_set、unordered_map的介绍及模拟 哈希表基础哈希的概念哈希表的基本操作 哈希冲突哈希冲突的定义哈希冲突的影响常见的哈希冲突的解决方法 哈希函数哈希函数的定义哈希函数的设计原则常见的哈希函数 unordered系列关联式容器hash模拟 哈希表基础 哈希的概…

AI大模型大厂面试真题:「2024大厂大模型技术岗内部面试题+答案」

AI大模型岗的大厂门槛又降低了&#xff01;实在太缺人了&#xff0c;大模型岗位真的强烈建议各位多投提前批&#xff0c;▶️众所周知&#xff0c;2025届秋招提前批已经打响&#xff0c;&#x1f64b;在这里真心建议大家6月7月一定要多投提前批&#xff01; &#x1f4bb;我们…

树莓派_Opencv学习笔记23:模版样本匹配

今日继续学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: ​ Opencv 版本是4.5.1&#xff1a; ​ Python 版本3.7.3&#xff1a; 今日学习Opencv样本…

MongoDB - 集合方法 db.collection.find()

文章目录 1. query 参数2. projection 参数2.1 仅返回指定的字段2.2 排除字段2.3 显式排除_id字段 3. 修改游标行为3.1 为结果集中的文档排序3.2 限制要返回的文档数量3.3 控制结果集的起点3.4 组合游标方法 db.collection.find( <query>, <projection>, <optio…