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.xdnf.cn/news/1488070.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

MT2142 逆序(树状数组)

思路&#xff1a; 开始完全没有思路&#xff0c;还是想问题的方法不对&#xff08;应该先暴力模拟&#xff0c;然后再想可以优化的方法&#xff09;。 后来看了解析&#xff0c;用chang[]来存储每个元素删除后&#xff08;或者是该元素前面的元素删除后&#xff09;对record造成…

肿瘤演变指标预测局部晚期前列腺癌10年以上的复发| 文献速递-基于人工智能(AI base)的医学影像研究与疾病诊断

Title 题目 Tumor evolution metrics predict recurrence beyond 10 years in locally advanced prostate cancer 肿瘤演变指标预测局部晚期前列腺癌10年以上的复发 01 文献速递介绍 癌症演变为预测肿瘤学奠定了基础。测试进化指标需要在控制临床试验中进行定量测量。我们…

STM32---HAL库基础配置记录之基础配置

一&#xff1a;第一步是时钟RCC的使能配置 时钟配置界面如下&#xff0c;当我们选定好芯片型号时&#xff0c;首先需要配置的是RCC&#xff0c;如下图&#xff1a; 其中第一个HSE代表的是时钟树的高速外部时钟对应下图中的1&#xff0c;LSE代表的是下图中的2 如下图&#xff0c…

GIS场景升级:支持多种影像协议与天气效果

在GIS场景编辑领域&#xff0c;升级视效的需求日益增加。有一款名为山海鲸可视化的免费工具&#xff0c;本人亲测能够完美满足这一需求。山海鲸可视化不仅支持多种GIS影像协议&#xff08;如TMS、WMS、WMTS等&#xff09;&#xff0c;还能一键添加天气效果&#xff0c;瞬间提升…

本地电脑连接阿里云

系列文章目录 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、方法1二、使用步骤1.引入库 前言 一、方法1 本地连接远程服务器的时候提示出现身份验证错误的几种解决方法 二、使用步骤 …

算法——滑动窗口(day8)

30.串联所有单词的子串 30. 串联所有单词的子串 - 力扣&#xff08;LeetCode&#xff09; 必看&#xff01;&#xff01;&#xff01;本题是我们上次写的438.异位词的进阶版&#xff0c;可参考本篇文章&#xff1a;算法——滑动窗口&#xff08;day7&#xff09;-CSDN博客来…

MySQL数据库安装使用

我们都知道数据库又分为关系型数据库和非关系型数据库&#xff1b; 关系型数据库指采用了关系模型来组织数据的数据库&#xff0c;指的就是二维表格模型。可以先初步理解为Excel表格。非关系型数据库又被称为NoSQL&#xff0c;对NoSQL 最普遍的定义是“非关联型的”&#xff0…

Android平台RTSP|RTMP直播播放器技术接入说明

技术背景 大牛直播SDK自2015年发布RTSP、RTMP直播播放模块&#xff0c;迭代从未停止&#xff0c;SmartPlayer功能强大、性能强劲、高稳定、超低延迟、超低资源占用。无需赘述&#xff0c;全自研内核&#xff0c;行业内一致认可的跨平台RTSP、RTMP直播播放器。本文以Android平台…

免费【2024】springboot 编程语言在线学习平台的设计与实现

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

数据库处理表

首先先创建库&#xff0c;然后创建需要的这三个表 用dese表名查看 然后题目要求对表进行修改 用alter table这个语法来对表进行修改 modify为修改字段 需要修改的字段的属性类型改变为的属性 最后用descStudent查看 第二题需要创建索引 创建索引createindex索引名称 cre…

C#开发的全屏图片切换效果应用 - 开源研究系列文章 - 个人小作品

这天无聊&#xff0c;想到上次开发的图片显示软件《 PhotoNet看图软件 》&#xff0c;然后想到开发一个全屏图片切换效果的应用&#xff0c;类似于屏幕保护程序&#xff0c;于是就写了此博文。这个应用比较简单&#xff0c;主要是全屏切换换图片效果的问题。 1、 项目目录&…

JS基础知识学习笔记全

JS基础知识学习笔记全 一、引入方式 1、内部脚本 &#xff08;一般定义在body下面会改善执行速度&#xff09; <body></body><!-- 内部脚本 --><script>/* 打开页面警告框显示的内容 */alert(helloJS);</script>2、外部脚本 外部专门新建一…

在Ubuntu上安装移远EC200M驱动

最近公司在做降本相关工作&#xff0c;考虑移远 EC20 4G模组成本较高&#xff0c;希望通过更低成本替换硬件&#xff0c;最后找到EC200M芯片&#xff0c;虽然EC200M速率(最大下行10M/s 最大上行5M/s)上低于EC20&#xff08;最大下行150M/s 最大上行50M/s&#xff09;,基本上可以…

(leetcode学习)19. 删除链表的倒数第 N 个结点

给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 3&#xff1a; …

ARM功耗管理之autosleep和睡眠锁实验

安全之安全(security)博客目录导读 ARM功耗管理精讲与实战汇总参见&#xff1a;Arm功耗管理精讲与实战 思考&#xff1a;睡眠唤醒实验&#xff1f;压力测试&#xff1f;Suspend-to-Idle/RAM/Disk演示&#xff1f; 1、实验环境准备 2、软件代码准备 3、唤醒源 4、Suspend-…

CSS学习笔记[Web开发]

CSS学习 本文为学习笔记&#xff0c;参考菜鸟和w3c 文章目录 CSS 简介CSS 插入外部 CSS内部 CSS行内 CSS多个样式表层叠顺序 CSS 语法例子解释 CSS 选择器CSS 元素选择器CSS id 选择器实例CSS 类选择器实例CSS 通用选择器实例CSS 分组选择器CSS 后代选择器CSS 子元素选择器CSS …

如何让网站实现https访问

要让网站实现HTTPS访问&#xff0c;主要需要完成以下几个步骤。这些步骤确保了网站与用户之间的数据传输安全&#xff0c;并提升了用户对网站的信任度。 1. 确定证书类型 首先&#xff0c;根据网站的需求和预算&#xff0c;选择合适的SSL证书类型。常见的SSL证书类型包括&…

GPT(LLM)不是AGI的全部

人工智能领域正在如火如荼地发展&#xff0c;随着诸如ChatGPT、Claude、Gemini、Sora和Grok等平台的不断涌现&#xff0c;AI技术和模型持续演进&#xff0c;引发人们对通用人工智能&#xff08;AGI&#xff09;的浓厚兴趣。 在这一备受关注的话题中&#xff0c;人们常常将GPT和…

Android WebViewClient 的 `shouldOverrideUrlLoading` 方法

简介 在Android开发中&#xff0c;WebView是一个强大的工具&#xff0c;可以在你的应用中显示网页内容。了解 WebViewClient 中的 shouldOverrideUrlLoading 方法是至关重要的&#xff0c;因为这个方法允许你控制 URL 在 WebView 中的处理方式。 在本文中&#xff0c;我们将详…

gitlab以及分支管理

一、分支概念 每次提交&#xff0c;Git都把它们串成一条时间线&#xff0c;这条时间线就是一个分支。截止 到目前&#xff0c;只有一条时间线&#xff0c;在Git里&#xff0c;这个分支叫主分支&#xff0c;即master分支。 HEAD 严格来说不是指向提交&#xff0c;而是指向maste…