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. Sql server 2014 数据库还原奇异现象

    用A库来还原B库   对正在使用的B库执行还原,还原时修改数据库名称,还原出错,提示数据库正在使用.删除B库,仍然提示正在使用,感觉像僵尸     重启SQL SERVER,因B库已删除,在A库上点击 ...

  2. Android为TV端助力 eclipse build project 出现major.minor version 52.0的问题

    那些网上说的JDK什么的的问题,我求你们不要误人子弟好吗? 出现在这个的原因就是ADT也就是你的SDK manager 的Tools版本跟你的SDK版本不兼容,如果你的是SDK 23.0.2那你的To ...

  3. Flutter数据持久化入门以及与Web开发的对比

    对于大部分安卓或者IOS开发人员来说,App的数据持久化可能是很平常的一个话题.但是对于Web开发人员来说,可能紧紧意味着localStorage和sessionStorage. Web开发 loca ...

  4. Kotlin入门(33)运用扩展属性

    进行App开发的时候,使用震动器要在AndroidManifest.xml中加上如下权限: <!-- 震动 --> <uses-permission android:name=&qu ...

  5. Linux 匿名页的反向映射

    我们知道LINUX的内存管理系统中有"反向映射"这一说,目的是为了快速去查找出一个特定的物理页在哪些进程中被映射到了什么地址,这样如果我们想把这一页换出(SWAP),或是迁移(Mi ...

  6. netcat的简单使用(一)

    简单写一下netcat这个强悍的工具,主要是怕自己忘了 功能大致这些个,有遗漏的欢迎私信补充 1.侦听模式/传输模式 2.telnet/获取banner信息 3.传输文本信息 4.传输文件/目录 5. ...

  7. 修改 TeamViewer ID 的方法

    TeamViewer 使用频繁后会被判定为商业用途,不可用.此软件的账号和设备mac地址绑定. 修改TeamViewer ID后可以重新开始使用.下述方法可以成功修改TeamViewer ID. 关闭 ...

  8. 深入Ambari Metrics 机制分析

    0.简介 Ambari作为一款针对大数据平台的运维管理工具,提供了集群的创建,管理,监控,升级等多项功能,目前在业界已经得到广泛使用. Ambari指标系统( Ambari Metrics Syste ...

  9. springboot aop + logback + 统一异常处理 打印日志

    1.src/resources路径下新建logback.xml 控制台彩色日志打印 info日志和异常日志分不同文件存储 每天自动生成日志 结合myibatis方便日志打印(debug模式) < ...

  10. 性能测试监控平台:InfluxDB+Grafana+Jmeter

    前面的博客介绍了InfluxDB.Telegraf.Grafana的安装和使用方法,这篇博客,介绍下如何利用这些开源工具搭建性能测试监控平台... 前言 性能测试工具jmeter自带的监视器对性能测试 ...