当前位置: 首页 > news >正文

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python * attr方法
  • MVC 参考手册
  • 深入解析JVM垃圾回收机制:Full GC、Minor GC与Major GC
  • 【海外高校联合支持举办 | 学术大咖fellow汇聚】2024年人工智能与数字化管理国际会议(ICAIDM 2024,9月20-22)
  • Java中的单点登录实现:OAuth2与JWT
  • (~_~)
  • 若依关闭验证码功能
  • Error running appInvalid argument : Argument invalidIport)
  • 前后端完全分离实现登录和退出
  • CTFHUB-文件上传-无验证
  • EAK水冷电阻60kW负载制动电阻器
  • PHP健身微信小程序系统源码
  • 更换收银系统时如何迁移会员数据
  • 简明中医辨证施治小程序
  • 常用传感器讲解十五--触摸传感器(KY-036)
  • Fabric架构演变之路
  • github指令
  • js正则,这点儿就够用了
  • OSS Web直传 (文件图片)
  • Spring Cloud中负载均衡器概览
  • vue总结
  • 闭包,sync使用细节
  • 聊聊flink的TableFactory
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 通过npm或yarn自动生成vue组件
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 怎么把视频里的音乐提取出来
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • #define 用法
  • $forceUpdate()函数
  • (02)vite环境变量配置
  • (3)(3.5) 遥测无线电区域条例
  • (C++17) std算法之执行策略 execution
  • (java)关于Thread的挂起和恢复
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (分布式缓存)Redis持久化
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (十六)串口UART
  • (原创)可支持最大高度的NestedScrollView
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .gitignore文件_Git:.gitignore
  • .gitignore文件设置了忽略但不生效
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .Net 垃圾回收机制原理(二)
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @GetMapping和@RequestMapping的区别
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [Android] Android ActivityManager
  • [CISCN2019 华北赛区 Day1 Web5]CyberPunk --不会编程的崽
  • [flutter]一键将YAPI生成的api.json文件转为需要的Dart Model类的脚本