service---七月十九号实验

1 startService、bindService

  1. startService:即使用户不直接与应用程序交互做的事情。这对应于Context.startService()系统安排服务工作的调用 ,直到服务或其他人明确停止它为止。,

  2. bindService:Context.bindService(),它允许与服务建立长期连接以便与服务进行交互。

2 分析生命周期变化

生命周期:

上图中onStart()方法已经弃用;

流程:onCreat—》onStartCommand--》onBind--》onUnbind--》onDestroy

系统可以运行服务有两个原因。

  1. 如果有人调用,Context.startService()那么系统将启动服务(创建它并onCreate()在需要时调用其方法),然后onStartCommand(Intent, int, int)使用客户端提供的参数调用其方法。此服务将在此时继续运行,直到Context.stopService()或被 stopSelf()调用。请注意,对Context.startService()的多次调用不会嵌套(尽管它们会导致多次对onStartCommand()的相应调用),因此无论启动多少次,一旦Context.stopService()或stopSelf停止服务 ; 服务可以使用它们的stopSelf(int)方法来确保在处理启动的意图之前不停止服务。

  2. 对于已启动的服务,他们可以决定运行两种主要的操作模式,具体取决于它们从onStartCommand()返回的值:START_STICKY用于根据需要显式启动和停止的服务,同时START_NOT_STICKYSTART_REDELIVER_INTENT用于服务应该只在处理发送给它们的任何命令时保持运行。。

客户端还可以Context.bindService()用于获取与服务的持久连接。如果服务尚未运行(onCreate()在执行此操作时调用),这同样会创建服务,但不会调用onStartCommand()。客户端将接收IBinder服务从其onBind(Intent)方法返回的 对象 ,允许客户端然后回调该服务。只要建立连接,服务将保持运行(客户端是否保留对服务的IBinder的引用)。通常,IBinder返回的是一个用aidl编写的复杂接口。

通过Demo类继承Service , 实现关于生命周期的方法,新建Activity来调用Service的方法:

  1.  @Override
    public void onCreate() {
    Log.d("Service声明周期", "onCreate: ");
    super.onCreate();
    } @Override
    public ComponentName startService(Intent service) {
    Log.d("Service声明周期", "startService: ");
    return super.startService(service);
    } @Override
    public IBinder onBind(Intent intent) {
    Log.d("Service声明周期", "onBind: ");
    return null;
    }
    @Override
    public void onRebind(Intent intent) {
    Log.d("Service声明周期", "onRebind: ");
    super.onRebind(intent);
    } @Override
    public void onDestroy() {
    Log.d("Service声明周期 ","onDestroy: ");
    super.onDestroy();
    }

启动验证周期:

相关链接:

  1. 官网:https://developer.android.com/reference/android/app/Service.html?hl=en#ProcessLifecycle

问题思考:

1. onBind方法返回值为IBinder,starService返回为ComponentName:

2. onStart()方法已经弃用;使用:ComponentName startService(Intent service)

3.使用: 继承Binder,建立对象, onBind方法返回IBind对象,传入OnServiceConnection方法。

service---七月十九号实验的更多相关文章

  1. SQL注入之Sqli-labs系列第二十九关(基于WAF防护的单引号报错注入)

    开始挑战第二十九关(Protection with WAF) 0x1查看源码 (1)login.php页面存在防护,只要检测到存在问题就跳转到hacked.php页面(其他信息看备注) 0x2 for ...

  2. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十九:SDRAM模块② — 多字读写

    实验十九:SDRAM模块② — 多字读写 表示19.1 Mode Register的内容. Mode Register A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A ...

  3. Python之路【第十九篇】:爬虫

    Python之路[第十九篇]:爬虫   网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用 ...

  4. centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数据库读写分离 双主搭建 mysql.history 第二十九节课

    centos  MySQL主从配置 ntsysv   chkconfig  setup命令  配置MySQL 主从 子shell  MySQL备份  kill命令  pid文件  discuz!论坛数 ...

  5. 学习笔记:CentOS7学习之十九:Linux网络管理技术

    目录 学习笔记:CentOS7学习之十九:Linux网络管理技术 本文用于记录学习体会.心得,兼做笔记使用,方便以后复习总结.内容基本完全参考学神教育教材,图片大多取材自学神教育资料,在此非常感谢MK ...

  6. Spring Boot 2.X(十九):集成 mybatis-plus 高效开发

    前言 之前介绍了 SpringBoot 整合 Mybatis 实现数据库的增删改查操作,分别给出了 xml 和注解两种实现 mapper 接口的方式:虽然注解方式干掉了 xml 文件,但是使用起来并不 ...

  7. NeHe OpenGL教程 第十九课:粒子系统

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  8. 设计模式 ( 十九 ) 模板方法模式Template method(类行为型)

      设计模式 ( 十九 ) 模板方法模式Template method(类行为型) 1.概述 在面向对象开发过程中,通常我们会遇到这样的一个问题:我们知道一个算法所需的关键步骤,并确定了这些步骤的执行 ...

  9. WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载]

    原文:WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载] 我们有两种典型的WCF调用方式:通过SvcUtil.exe(或者添加Web引用)导入发布的服务元数据生成服务代理相关的代码 ...

随机推荐

  1. Vs2012帮助文档安装介绍

    Vs2012的帮助文档:Microsoft Help Viewer.exe,vs2010对应的是1.0,vs2012对应的是2.0,版本号以此类推 与早期的chm格式的msdn帮助文档不同在于: 1. ...

  2. nginx geoip_module 地域信息读取

    1.安装geoip yum -y install nginx-module-geoip 2.安装完成后在cd /etc/nginx/modules/ 能看到安装的模块 # cd /etc/nginx/ ...

  3. web服务器获取请求客户端真实地址的方法

    服务器获取客户端或者网页的请求,获取IP时需要注意,因为一个请求到达服务器之前,一般都会经过一层或者多层代理服务器,比如反向代理服务器将http://192.168.1.10:port/ 的URL反向 ...

  4. NLP中一些数学知识

    1.所谓概率函数就是要在整个样本空间分配概率值,概率值总和为1 2.一个完备的概率空间应该由样本空间,概率函数和事件域这三部分组成,在统计自然语言处理中,我们的目标就是为建立的模型定义一个符合上述条件 ...

  5. day 29

    Let the dead have the immortality of fame, but the living the immortality of love. 让逝者拥有不朽的荣誉,让生者拥有不 ...

  6. Bootstrap-table实现动态合并相同行

    Bootstrap-table  表格合并相同名字的列 @编写function() /** * 合并行 * @param data 原始数据(在服务端完成排序) * @param fieldName ...

  7. java 声明并初始化整型变量

    public class Sample { public static void main(String[] args) { int num; num = ; System.out.println(& ...

  8. 利用ANSYS进行橡胶坝的静力分析和模态计算

    这个是我一个同学的毕业论文,我也帮了一点小忙,所以征得同学同意,把相关的经验共享一下(当时候做得也很艰难,网上查到的可参考的资料太少了,而且没有具体步骤). 先占一个位子,以前的模型还有命令流文件都找 ...

  9. 黑科技!两行代码完美解决:同时设置overflow-x:hidden,overflow-y:visible无效的问题

    不废话,直接上代码 <!DOCTYPE html> <html> <head> <style> body { padding: 0; margin: 0 ...

  10. 【ASP.NET Core分布式项目实战】(五)Docker制作dotnet core控制台程序镜像

    Docker制作dotnet core控制台程序镜像 基于dotnet SDK 新建控制台程序 mkdir /home/console cd /home/console dotnet new cons ...