《第一行代码-Android》学习笔记(十九)

2024-06-17 01:32

本文主要是介绍《第一行代码-Android》学习笔记(十九),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.虽然每调用一次startService方法,onStartCommand就会被执行,但实际上每个服务都只会有一个实例,所以不管调用了多少次的start,最后只要一个stopService或者stopSelf就可以停止一个服务。

 

2.Android的规定,如果既调用了startService方法又调用了bindService方法,这个时候要想服务执行onDestory方法,必须让stopServiceunbindService同时执行。

 

3.前台服务:由于服务的系统级别比较低,很有可能在系统内存不够的时候,服务被回收掉。

这个时候就可以用到前台服务。

① 前台服务与普通服务的区别就是:前台服务会一直有一个图标在系统的状态栏显示,下拉状态栏之后可以看到更加详细的信息。

② 如何创建前台服务:只要改写一下普通服务的onCreate方法即可,在里面加入一个Notification,与在其他地方创建notification不一样的是,这里使用的是startForeground()方法来展示这个notification,而不是通过notificationManager

 public void onCreate(){

       super.onCreate();

       Log.d("gu", "create");

       Notification notification = new Notification(R.drawable.ic_launcher, "Notification comes",

       System.currentTimeMillis());

       Intent intent = new Intent(this, MainActivity.class);

       PendingIntent pi = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);

       notification.setLatestEventInfo(this, "This is title", "This is content", pi);

       startForeground(1, notification);

 }

③ 当Servicedestory的时候,上面的notification也会被结束

 

4.在Service中开启线程执行耗时任务之后,如果任务执行成功了,如何让服务停止:

可以再子线程结束的地方执行:stopSelf()方法;

 

5.使用IntentService:这个类是个抽象类,它再其内部封装了创建子线程的过程,只要我们写一个子类继承它,就可以轻松实现在service中创建线程操作,并将一些操作放在其onHandleIntent方法中执行即可。

① IntentServiceonHandleIntent()方法中的子线程任务执行完毕之后,会自动停止服务

 

 

 

这篇关于《第一行代码-Android》学习笔记(十九)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1068110

相关文章

JAVA利用顺序表实现“杨辉三角”的思路及代码示例

《JAVA利用顺序表实现“杨辉三角”的思路及代码示例》杨辉三角形是中国古代数学的杰出研究成果之一,是我国北宋数学家贾宪于1050年首先发现并使用的,:本文主要介绍JAVA利用顺序表实现杨辉三角的思... 目录一:“杨辉三角”题目链接二:题解代码:三:题解思路:总结一:“杨辉三角”题目链接题目链接:点击这里

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

轻松掌握python的dataclass让你的代码更简洁优雅

《轻松掌握python的dataclass让你的代码更简洁优雅》本文总结了几个我在使用Python的dataclass时常用的技巧,dataclass装饰器可以帮助我们简化数据类的定义过程,包括设置默... 目录1. 传统的类定义方式2. dataclass装饰器定义类2.1. 默认值2.2. 隐藏敏感信息

opencv实现像素统计的示例代码

《opencv实现像素统计的示例代码》本文介绍了OpenCV中统计图像像素信息的常用方法和函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 统计像素值的基本信息2. 统计像素值的直方图3. 统计像素值的总和4. 统计非零像素的数量

IDEA常用插件之代码扫描SonarLint详解

《IDEA常用插件之代码扫描SonarLint详解》SonarLint是一款用于代码扫描的插件,可以帮助查找隐藏的bug,下载并安装插件后,右键点击项目并选择“Analyze”、“Analyzewit... 目录SonajavascriptrLint 查找隐藏的bug下载安装插件扫描代码查看结果总结Sona

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

Java实现批量化操作Excel文件的示例代码

《Java实现批量化操作Excel文件的示例代码》在操作Excel的场景中,通常会有一些针对Excel的批量操作,这篇文章主要为大家详细介绍了如何使用GcExcel实现批量化操作Excel,感兴趣的可... 目录前言 | 问题背景什么是GcExcel场景1 批量导入Excel文件,并读取特定区域的数据场景2

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert