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知识点的学习告一 ...
随机推荐
- 如何解决angular不自动生成spec.ts文件
"schematics":{ "@schematics/angular:component": { "styleext": ...
- 【代码笔记】Web-CSS-CSS 语法
一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- arcgis api 3.x for js 入门开发系列十三地图最短路径分析(附源码下载)
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
- .NET下对Web.config与App.Config的增删改操作的代码
把代码过程常用的内容做个收藏,下边代码段是关于 .NET下对Web.config与App.Config的增删改操作的代码. <?xml version="1.0" encod ...
- java新知识系列 五
类方法和对象方法的使用限制 abstract修饰符的注意 静态变量只能在类主体中定义,不能在方法中定义 线程的各种方法差别 关于抽象类 什么是中间件 Servlet生命周期的三个主要方法 可以修饰类的 ...
- python 爬取全本免费小说网的小说
这几天朋友说想看电子书,但是只能在网上看,不能下载到本地后看,问我有啥办法?我找了好几个小说网址看了下,你只能直接在网上看,要下载txt要冲钱买会员,而且还不能在浏览器上直接复制粘贴.之后我就想到py ...
- JavaScript -- JSON.parse 函数 和 JSON.stringify 函数
JavaScript -- JSON.parse 函数 和 JSON.stringify 函数 1. JSON.parse 函数: 使用 JSON.parse 可将 JSON 字符串转换成对象. &l ...
- kernel笔记——内核同步与锁
内核同步 内核同步解决并发带来的问题,多个线程对同一数据进行修改,数据会出现不一致的情况,同步用于保护共享数据等资源. 有两种形式的并发: 同时进行式并发,在不同cpu上执行的进程同时访问共享数据 二 ...
- 基础数据类型:整型int、布尔值bool、字符串str、与for循环
1.整型 int() p2 long 长整型 p3 全部都是整型 2.布尔值 bool() True --- int() int(True) int() --- True bool(int) 注意点: ...
- 外部访问docker中的MySQL
注:192.168.1.203机器上装有docker,容器在该机器上 mysql> use mysql; mysql> update user set authentication_str ...