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. loj#6074. 「2017 山东一轮集训 Day6」子序列(矩阵乘法 dp)

    题意 题目链接 Sol 设\(f[i][j]\)表示前\(i\)个位置中,以\(j\)为结尾的方案数. 转移的时候判断一下\(j\)是否和当前位置相同 然后发现可以用矩阵优化,可以分别求出前缀积和逆矩 ...

  2. 统计字符串中字符出现的次数(||和&&的区别)

    var str = "ProsperLee"; // || 返回第一个为真的表达式的值,若全为假则返回最后一个表达式的值 // && 返回第一个为假的表达式的值,若 ...

  3. SAP MM 根据采购订单反查采购申请?

    SAP MM 根据采购订单反查采购申请? 前日微信上某同行发来一个message,说是想知道如何通过采购订单号查询到其前端的采购申请号. 笔者首先想到去检查采购订单相关的常用报表ME2L/ME2M/M ...

  4. 在OQL上使用UPDLOCK锁定查询结果,安全的更新实体数据

    SqlServer查询记录的时候提供多种锁定方式,其中UPDLOCK 的优点是允许您读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改.当我们用UPDLOCK来读取记 ...

  5. (详细)华为荣耀V10 BKL-AL00的USB调试模式在哪里打开的步骤

    每当我们使用pc连接安卓手机的时候,如果手机没有开启Usb开发者调试模式,pc则无法成功检测到我们的手机,有时我们使用的一些功能比较强的的app比如以前我们使用的一个app引号精灵,老版本就需要开启U ...

  6. 小米Max 2获取ROOT超级权限的经验

    小米Max 2有么好方法开通了root权限?大家都了解,安卓手机有root权限,如果手机开通了root相关权限,能够实现更完美的功能,打比方大家企业的营销部门的同事,使用某些营销工具都需要在root权 ...

  7. vs文件上传失败--超过最大字符限制

    一.问题 在文件上传时,会遇到大文件上传失败. >F12查看报错网络请求返回结果 >问题分析 由于vs上传文件默认的字符大小控制. 二.解决方法 >在web.config中修改或添加 ...

  8. 两种常用的全排列算法(java)

    问题:给出一个字符串,输出所有可能的排列. 全排列有多种算法,此处仅介绍常用的两种:字典序法和递归法. 1.字典序法: 如何计算字符串的下一个排列了?来考虑"926520"这个字符 ...

  9. spring学习总结——装配Bean学习四(导入和混合配置)

    情景:在典型的Spring应用中,我们可能会同时使用自动化和显式配置(JavaConfig)或者XML配置,幸好在Spring中,这些配置方案都不是互斥的.你尽可以将JavaConfig的组件扫描和自 ...

  10. Elasticsearch源码分析 - 源码构建

    原文地址:https://mp.weixin.qq.com/s?__biz=MzU2Njg5Nzk0NQ==&mid=2247483694&idx=1&sn=bd03afe5a ...