1. 进程的概念

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

b)        服务是没有界面的,可理解为没有界面的Activity

c)         进程的优先级

i.              Foreground process前台进程:优先级最高,相当于activity执行了onResume()方法,用户正在交互;

ii.              Visible process 可视进程:一直影响用户看得见,相当于Activity执行了onPause()方法

iii.              Service process 服务进程:通过startService()方法开启了一个服务

iv.              Background process 后台进程:相当于Activity执行了onStop()方法,界面不可见,Activity并没有销毁

v.              Empty process 空进程:不会维持任何组件运行

  1. start开启服务的服务和特点

a)        定义四大组件的方式是一样的

b)        定义一个类继承Service

c)         特点:

i.              第一次点击按钮开启服务,服务执行onCreate

ii.              第二次点击按钮再次开启服务,服务执行onStart方法

iii.              服务一旦被开启,服务就会在后台长期运行,指导用户手动停止

d)        实时去服务器取数据

  1. 电话qietingqi案例

a)        TelephoneManger

  1. 使用服务注册特殊的广播接听者

a)        定义广播接收者

b)        写服务用来注册广播接收者

c)         在mMainActivity中开启服务

  1. bindService开启服务特点

a)        第一次点击按钮会执行服务的onCreate()和onBind()

b)        当onBind返回nullshi onServiceStartConnected()不执行

c)         第二次点击按钮,服务不相应

d)        调用者(Activity)和服务之间不求同生,但求同死

e)        服务不可以多次解绑

f)         Bind方式开启的服务在设置页面找不到

  1. 为什么要引入bindService

a)        为了调用服务的方法

  1. 通过bindService方式调用服务方法的过程

a)        在服务内部定义一个方法,让activity去调用

b)        在服务的类里定义一个中间人类继承IBinder

c)         把定义的中间人对象在onBind方法里面返回

d)        在MainActivity的onCreate方法里面调用服务类的对象的目的是为了获取定义的中间人对象

e)        获取中间人对象

f)         达到中间人对象可以间接调用服务里面的方法

g)        当Activity销毁时解绑服务

  1. 通过接口方式调用服务里面的方法

a)        定义一个接口,把想暴露的方法定义在接口里面

b)        定义中间人对象实现我们自己定义的接口

c)         获取中间人对象,间接调用服务里面的方法

  1. 混合方式开启服务

a)        需求:想让服务在后台长期运行,又想调用服务里面的方法

b)        步骤:

i.              先调用startService方法开启服务,保证在后台长期运行

ii.              调用bindService方法,获取中间人对象

iii.              调用unbindService方法,解绑服务

iv.              调用stopService方法

  1. Aidl介绍

a)        本地服务:运行自己应用里面的服务

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

c)         实现进程间通信:IPC

d)        Aidl:专门用来解决进程之间的通信

e)        使用步骤:

i.              把IService.java改为.aidl文件

ii.              Aidl这个语言不认识public,把public去掉

iii.              自动生成IService.java文件,自动生成Stub类继承了Binde实现了Iservicer.aidl

iv.              定义IBinder对象直接继承Stub即可

v.              保证两个应用的aidl文件一样,另外一个应用的aidl所在的报名即可

vi.              获取IBinder方式和在一个应用中调用不一样

Android学习第8天的更多相关文章

  1. Android学习路线总结,绝对干货

    title: Android学习路线总结,绝对干货 tags: Android学习路线,Android学习资料,怎么学习android grammar_cjkRuby: true --- 一.前言 不 ...

  2. Android 学习资源

    下面这些资源对Android开发来说是很有帮助的! 最常用的: Android开发官方网站:http://developer.android.com/index.html 这个网站应该是Android ...

  3. Android学习资料收集

    1.Android 学习之路 http://stormzhang.com/android/2014/07/07/learn-android-from-rookie/

  4. Android学习——第一个NDK程序

    在前面的学习中,我们已经讲解了关于NDK编程的环境搭建流程,简单的使用我们也通过官网本身自带的例子进行说明了.可是相信大家一定还存在这么的一个疑惑:“如果我要自己利用NDK编写一个Android应用, ...

  5. Android学习——windows下搭建Cygwin环境

    在上一篇博文<Android学习——windows下搭建NDK_r9环境>中,我们详细的讲解了在windows下进行Android NDK开发环境的配置,我们也讲到了在NDk r7以后,我 ...

  6. Android学习——windows下搭建NDK_r9环境

    1. NDK(Native Development Kit) 1.1 NDK简介 Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP功能开发的工具,通过这个 ...

  7. Android学习第三天-打包常用命令

    在前面<Android学习第一天-adb常用命令>和 <Android学习第二天-android常用命令>两篇博文中,我们重点讲解了adb和android的常用命令,下面我们讲 ...

  8. 【Android学习】《Android开发视频教程》第一季笔记

    视频地址: http://study.163.com/course/courseMain.htm?courseId=207001 课时5    Activity基础概念 1.Android开发技术结构 ...

  9. Android 学习资料收集

    收集整理这份资料灵感来自于 trip_to_iOS, 征得同意引用了该资料的开头描述 收集整理这份资料主要帮助初学者学习 Android 开发, 希望能快速帮助到他们快速入门, 找到适合自己学习资料, ...

  10. 十一、Android学习第十天——项目开始(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 十一.Android学习第十天——项目开始 Android知识点的学习告一 ...

随机推荐

  1. 如何解决angular不自动生成spec.ts文件

    "schematics":{   "@schematics/angular:component": {        "styleext": ...

  2. 【代码笔记】Web-CSS-CSS 语法

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  3. arcgis api 3.x for js 入门开发系列十三地图最短路径分析(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  4. .NET下对Web.config与App.Config的增删改操作的代码

    把代码过程常用的内容做个收藏,下边代码段是关于 .NET下对Web.config与App.Config的增删改操作的代码. <?xml version="1.0" encod ...

  5. java新知识系列 五

    类方法和对象方法的使用限制 abstract修饰符的注意 静态变量只能在类主体中定义,不能在方法中定义 线程的各种方法差别 关于抽象类 什么是中间件 Servlet生命周期的三个主要方法 可以修饰类的 ...

  6. python 爬取全本免费小说网的小说

    这几天朋友说想看电子书,但是只能在网上看,不能下载到本地后看,问我有啥办法?我找了好几个小说网址看了下,你只能直接在网上看,要下载txt要冲钱买会员,而且还不能在浏览器上直接复制粘贴.之后我就想到py ...

  7. JavaScript -- JSON.parse 函数 和 JSON.stringify 函数

    JavaScript -- JSON.parse 函数 和 JSON.stringify 函数 1. JSON.parse 函数: 使用 JSON.parse 可将 JSON 字符串转换成对象. &l ...

  8. kernel笔记——内核同步与锁

    内核同步 内核同步解决并发带来的问题,多个线程对同一数据进行修改,数据会出现不一致的情况,同步用于保护共享数据等资源. 有两种形式的并发: 同时进行式并发,在不同cpu上执行的进程同时访问共享数据 二 ...

  9. 基础数据类型:整型int、布尔值bool、字符串str、与for循环

    1.整型 int() p2 long 长整型 p3 全部都是整型 2.布尔值 bool() True --- int() int(True) int() --- True bool(int) 注意点: ...

  10. 外部访问docker中的MySQL

    注:192.168.1.203机器上装有docker,容器在该机器上 mysql> use mysql; mysql> update user set authentication_str ...