zoukankan      html  css  js  c++  java
  • Service的生命周期&Service绑定方法

    服务的生命周期:

     一、采用start的方式开启服务 

    生命周期如下:

    开启服务: onCreate()--> onStartCommand() (onStart()过时了)---> onDestory();

    如果服务已经开启,不会重复的执行onCreate(), 而是会调用onStart()和 onStartCommand();

    服务停止的时候 onDestory().

    服务只会被停止一次 


    二、采用绑定的方式开启服务。
    onCreate() --->onBind()--->onunbind()-->onDestory()
    绑定服务不会调用onstart或者onstartcommand方法

    混合调用的服务的生命周期:
    需求:服务长期后台运行,又想调用服务的方法:
    1.start方式开启服务(保证服务长期后台运行)
    2.bind方式绑定服务(保证调用服务的方法)
    3.unbind解除绑定服务
    4.stopService停止服务。

    三、两种开启服务方法的区别。

    start方式开启服务。 一旦服务开启后就跟调用者(开启者)就没有任何关系了。
    开启者退出了,开启者挂了,服务还在后台长期的运行。
    开启者没有办法去调用服务里面的方法。


    bind的方式开启服务,绑定服务,调用者挂了,服务也会跟着挂掉。
    但是开启者可以调用服务里面的方法。

    --------------------------------------------------------------------------------------------

    远程服务&本地服务

    远程服务:调用者和服务在不同的工程代码里面。
    本地服务:调用者和服务在同一个工程代码里面。


    每一个应用程序都是运行在自己独立的进程里面的。
    进程是操作系统分配内存空间的一个单位。进程的数据都是独立的。

    绑定远程服务需要用到aidl文件
    aidl:android interface definition language 安卓接口定义语言
    aidl文件都是公有的,没有访问权限修饰符
    (IPC: inter process communication 进程间通讯)


    绑定本地服务调用方法的步骤:
    1.在服务的内部创建一个内部类 提供一个方法,可以间接调用服务的方法
    private class MyBinder extends Binder implements IMyBinder{}
    2.实现服务的onbind方法,返回的就是MyBinder
    3.在activity 绑定服务。bindService();
    4.在服务成功绑定的时候 会执行一个方法 onServiceConnected 传递过来一个 IBinder对象
    5.强制类型转换,调用接口里面的方法。


    绑定远程服务调用方法的步骤:
    1.在服务的内部创建一个内部类 提供一个方法,可以间接调用服务的方法
    2.把暴露的接口文件的扩展名改为aidl文件 去掉访问修饰符 public
    private class MyBinder extends IMyBinder.Stub{}  (IPC的子类)
    3.实现服务的onbind方法,返回的就是MyBinder
    4.在activity 绑定服务。bindService();
    5.在服务成功绑定的时候 会执行一个方法 onServiceConnected 传递过来一个 IBinder对象
    6.IMyBinder.Stub.asInterface(binder),调用接口里面的方法。

    #学习笔记,如有谬误,敬请指正。#
  • 相关阅读:
    第二次冲刺——第5天
    第二次冲刺——第4天
    第二次冲刺——第3天
    第二次冲刺——第2天
    第二次冲刺——第1天
    团队开发——第一次冲刺第8天
    团队开发——第一次冲刺第7天
    团队开发——第一次冲刺第1天
    软件工程课堂练习——找出1-n中1出现的个数
    软件工程——《你的灯亮着吗》读书笔记2
  • 原文地址:https://www.cnblogs.com/happyhacking/p/4150189.html
Copyright © 2011-2022 走看看