zoukankan      html  css  js  c++  java
  • Android学习笔记【08】【四大组件之服务】

    一、进程的概念

    四大组件都运行在主线程中

    官方进程介绍:file:///D:/Program%20Files/docs/guide/components/processes-and-threads.html

    进程的优先级:

    1、前台进程:activity的onResume

    2、可视进程:activity的onPause

    3、服务进程:startService后台在运行的服务(如下载文件服务,后台播放音乐)

    4、后台进程:activity的onStop

    5、空进程:保留只是为了在下一次能够快速启动

    二、start方式开启服务

    服务开启,依次执行onCreate和onStartCommand,再次开启,只执行onStartCommand

    服务开启后会一直运行,直到手动停止

    三、电话录音案例

    TelephoneManager

    1、定义服务,开启服务

    2、在服务的onCreate中获得TelephonyManager

    3、注册电话的监听

    4、定义一个类用来监听电话的状态(onCallStateChanged)

    5、录音功能(MediaRecorder)

    录音功能官方原文:file:///D:/Program%20Files/docs/guide/topics/media/audio-capture.html

    四、使用服务注册特殊的广播接收者

    1、定义广播接收者(接收屏幕解锁和锁屏事件)

    2、定义服务用于注册广播接收者(特殊广播接收者只能通过代码注册接收)

    3、MainActivity中开启服务

    4、配置服务

    五、bindService开启服务特点

    1、bind开启时,服务会依次执行onCreate和onBind

    2、onBand返回null时,onServiceConnected不执行

    3、再次bindService,服务没有响应

    4、Activity销毁后,bindService的服务同时销毁

    5、不可以多次解绑

    6、通过bind开启的服务不能在设置页面找到(隐形服务)

    六、引入bindService服务原因

    为了调用服务里定义的方法

    七、通过bindService方式调用服务方法里面的过程

    1、服务内部定义一个方法

    2、服务内部定义一个Binder类,类中定义一个方法调用服务内部的方法

    3、实例化一个Binder通过onBind返回

    4、onCreate方法中调用bindService开启服务

    5、onServiceConnected中获取Binder对象

    6、通过Binder对象调用服务内部的方法

    7、注意Activity销毁方法中解绑服务

    八、通过接口方式调用服务里面的方法

    九、百度音乐盒框架

    十、aidl介绍

    本地服务:运行在自己应用里的服务

    远程服务:运行在其他应用里的服务

    IPC进程间通信

    1、把IService.java变成aidl文件(改后缀名)

    2、把文件中public去掉

    3、系统自动生成文件,文件中生成一个Stub类

    4、自定义一个类继承自Stub

    5、保证两个应用的aidl一致(文件相同,包名相同)

    6、用Stub类中的asInterface(service)获取IBinder对象

    十一、aidl应用场景

    支付宝

  • 相关阅读:
    POJ3687拓扑排序+贪心
    POJ3687拓扑排序+贪心
    POJ3614奶牛晒阳光DINIC或者贪心
    POJ3614奶牛晒阳光DINIC或者贪心
    POJ3070矩阵快速幂简单题
    POJ3070矩阵快速幂简单题
    POJ3040给奶牛发工资
    POJ3040给奶牛发工资
    #Leetcode# 78. Subsets
    #Leetcode# 89. Gray Code
  • 原文地址:https://www.cnblogs.com/leishoulin/p/7441790.html
Copyright © 2011-2022 走看看