Android学习第8天
- 进程的概念
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 空进程:不会维持任何组件运行
- start开启服务的服务和特点
a) 定义四大组件的方式是一样的
b) 定义一个类继承Service
c) 特点:
i. 第一次点击按钮开启服务,服务执行onCreate
ii. 第二次点击按钮再次开启服务,服务执行onStart方法
iii. 服务一旦被开启,服务就会在后台长期运行,指导用户手动停止
d) 实时去服务器取数据
- 电话qietingqi案例
a) TelephoneManger
- 使用服务注册特殊的广播接听者
a) 定义广播接收者
b) 写服务用来注册广播接收者
c) 在mMainActivity中开启服务
- bindService开启服务特点
a) 第一次点击按钮会执行服务的onCreate()和onBind()
b) 当onBind返回nullshi onServiceStartConnected()不执行
c) 第二次点击按钮,服务不相应
d) 调用者(Activity)和服务之间不求同生,但求同死
e) 服务不可以多次解绑
f) Bind方式开启的服务在设置页面找不到
- 为什么要引入bindService
a) 为了调用服务的方法
- 通过bindService方式调用服务方法的过程
a) 在服务内部定义一个方法,让activity去调用
b) 在服务的类里定义一个中间人类继承IBinder
c) 把定义的中间人对象在onBind方法里面返回
d) 在MainActivity的onCreate方法里面调用服务类的对象的目的是为了获取定义的中间人对象
e) 获取中间人对象
f) 达到中间人对象可以间接调用服务里面的方法
g) 当Activity销毁时解绑服务
- 通过接口方式调用服务里面的方法
a) 定义一个接口,把想暴露的方法定义在接口里面
b) 定义中间人对象实现我们自己定义的接口
c) 获取中间人对象,间接调用服务里面的方法
- 混合方式开启服务
a) 需求:想让服务在后台长期运行,又想调用服务里面的方法
b) 步骤:
i. 先调用startService方法开启服务,保证在后台长期运行
ii. 调用bindService方法,获取中间人对象
iii. 调用unbindService方法,解绑服务
iv. 调用stopService方法
- 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天的更多相关文章
- Android学习路线总结,绝对干货
title: Android学习路线总结,绝对干货 tags: Android学习路线,Android学习资料,怎么学习android grammar_cjkRuby: true --- 一.前言 不 ...
- Android 学习资源
下面这些资源对Android开发来说是很有帮助的! 最常用的: Android开发官方网站:http://developer.android.com/index.html 这个网站应该是Android ...
- Android学习资料收集
1.Android 学习之路 http://stormzhang.com/android/2014/07/07/learn-android-from-rookie/
- Android学习——第一个NDK程序
在前面的学习中,我们已经讲解了关于NDK编程的环境搭建流程,简单的使用我们也通过官网本身自带的例子进行说明了.可是相信大家一定还存在这么的一个疑惑:“如果我要自己利用NDK编写一个Android应用, ...
- Android学习——windows下搭建Cygwin环境
在上一篇博文<Android学习——windows下搭建NDK_r9环境>中,我们详细的讲解了在windows下进行Android NDK开发环境的配置,我们也讲到了在NDk r7以后,我 ...
- Android学习——windows下搭建NDK_r9环境
1. NDK(Native Development Kit) 1.1 NDK简介 Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP功能开发的工具,通过这个 ...
- Android学习第三天-打包常用命令
在前面<Android学习第一天-adb常用命令>和 <Android学习第二天-android常用命令>两篇博文中,我们重点讲解了adb和android的常用命令,下面我们讲 ...
- 【Android学习】《Android开发视频教程》第一季笔记
视频地址: http://study.163.com/course/courseMain.htm?courseId=207001 课时5 Activity基础概念 1.Android开发技术结构 ...
- Android 学习资料收集
收集整理这份资料灵感来自于 trip_to_iOS, 征得同意引用了该资料的开头描述 收集整理这份资料主要帮助初学者学习 Android 开发, 希望能快速帮助到他们快速入门, 找到适合自己学习资料, ...
- 十一、Android学习第十天——项目开始(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 十一.Android学习第十天——项目开始 Android知识点的学习告一 ...
随机推荐
- prufer序列笔记
prufer序列 度娘的定义 Prufer数列是无根树的一种数列.在组合数学中,Prufer数列由有一个对于顶点标过号的树转化来的数列,点数为n的树转化来的Prufer数列长度为n-2. 对于一棵确定 ...
- idea部署Maven入门(一)——环境变量的配置和下载
介绍: 1 Maven是用来管理jar包的一种工具, 2 Maven主要是构建java项目和java web项目 3 maven项目管理所依赖的jar ...
- 章节九、4-ChromDriver介绍
一.首先下载Chrom浏览器驱动,将驱动解压到存放火狐浏览器驱动文件路径中(请观看前面的章节) 1.进入该网址下载匹配本地浏览器版本的驱动 http://chromedriver.storage.go ...
- Django 如何让ajax的POST方法带上CSRF令牌
问题 大家知道,在大前端领域,有一种叫做ajax的东东,即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),它被用来在不刷新页面的情况下,提 ...
- 从0开始的Python学习004小的总结与补充
没有时间?快速阅读: Python确实是一种十分精彩又强大的语言. Python是程序.脚本或者软件 python helloworld.py运行你的Python help()帮助你的Python 命 ...
- 在Windows 10中截取截图的6种方式 简介
在Windows 10中截取截图的6种方式 简介 截图对于不同的目的很重要.它可以用于捕获笔记本电脑上的任何内容的截图.所以,如果你使用Windows 10,你可能不知道如何截图,因为它是比较新的.因 ...
- Eclipse出错不断,注册表不能乱改
Eclipse打不开,始终报错,还能不能开心的敲代码了??? 首先说下造成我这个愚蠢错误的起源:电脑是win10系统,本来是可以正常使用的.某一天,我正在使用python,打开命令提示符,看见开头是中 ...
- XML详解一XML语法
XML指可扩展标记语言很类似 HTML,被设计用来传输和存储数据而非显示数据,XML标签没有被预定义需要自行定义标签,标签具有自我描述性,同时XML也是 W3C 的推荐标准. 先来写一个XML脚本de ...
- 【Teradata】使用arcmain进行不落地数据迁移(管道)
1.备份脚本准备 //脚本bak_ds.arc .logon 192.168.253.222/sysdba,learning1510; archive data tables(DS) ,release ...
- redis常用命令大全
1.基于内存的key-value数据库 2.基于c语言编写的,可以支持多种语言的api //set每秒11万次,取get 81000次 3.支持数据持久化 4.value可以是string,hash, ...