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. 可视化设计,类Excel的快速开发平台

    活字格Web应用生成器,是可视化设计,类Excel的快速开发平台,接下来给大家介绍如何体现这些特点. 一.可视化设计 网页系统的开发,包含UI设计+代码编写的工作,最终形成网页系统.这要求系统开发人员 ...

  2. java设计模式——适配器模式 Java源代码

    前言:适配器模式就是把一个类的接口变换成客户端所能接受的另一种接口,从而使两个接口不匹配而无法在一起工作的两个类能够在一起工作.通常被用在一个项目需要引用一些开源框架来一起工作时,这些框架的内部都有一 ...

  3. MongoDB数据库的设计规范

    MongoDB是非关系型数据库的典型代表,DB-Engines Ranking 数据显示,近年来,MongoDB在NoSQL领域一直独占鳌头.MongoDB是为快速开发互联网应用 而设计的数据库系统, ...

  4. 启动期间的内存管理之初始化过程概述----Linux内存管理(九)

    在内存管理的上下文中, 初始化(initialization)可以有多种含义. 在许多CPU上, 必须显式设置适用于Linux内核的内存模型. 例如在x86_32上需要切换到保护模式, 然后内核才能检 ...

  5. Linix基本命令

    基本命令关机:shutdown -h halt init 0 poweroff重启:shutdown -r reboot init 6pwd:查看工作目录ls:查看指定目录的内容-l:列表显示-a:显 ...

  6. java实现简单的solr查询

    SolrQuery类是实现solr查询的类. @Test public void testSelect() { String url = "http://localhost:8081/sol ...

  7. Bootstrap -- 缩略图、进度条、列表组、面板

    Bootstrap -- 缩略图.进度条.列表组.面板 1. 缩略图 大多数站点都需要在网格中布局图像.视频.文本等.Bootstrap 通过缩略图为此提供了一种简便的方式.使用 Bootstrap ...

  8. SQLServer之修改PRIMARY KEY

    使用SSMS数据库管理工具修改PRIMARY KEY 1.连接数据库,选择数据表->右键点击->选择设计(或者展开键,选择要修改的键,右键点击,选择修改,后面步骤相同). 2.选择要修改的 ...

  9. 《精通Spring+4.x++企业应用开发实战》读后感

    引言 还记得大三时上培训班的是时候,当时的培训老师说自己是本地讲解spring最好的讲师,但是后来等我实习了看了<Spring 3.x 企业应用开发实战>以及后续版本<精通Sprin ...

  10. Linux中断管理

    CPU和外设之间的交互,或CPU通过轮询机制查询,或外设通过中断机制主动上报. 对大部分外设中断比轮询效率高,但比如网卡驱动采取轮询比中断效率高. 这里重点关注ARM+Linux组合下中断管理,从底层 ...