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知识点的学习告一 ...
随机推荐
- iOS 10 设备权限问题(相机,相册等)
iOS 10 的设备权限 需要添加的字段有: <!-- 相册 --> <key>NSPhotoLibraryUsageDescription</key> <s ...
- Skywalking部署常见问题以及注意事项
Skywalking部署常见问题以及注意事项 Intro SkyWalking 创建与2015年,提供分布式追踪功能.从5.x开始,项目进化为一个完成功能的Application Performanc ...
- Numpy库的下载与安装总结
今天在做Plotly的散点图时,需要Numpy 这个库的使用 没有安装Numpy这个库的时候,报错一般是下图这样:ModuleNotFoundError: No module named 'numpy ...
- ADOConnection断线重连
问题: ADOConnection断线重连问题描述: 使用ADOConnection连接oracle数据库,开始正常,当网络断开时数据库连接失败(此时查询ADOConnection.connected ...
- MVC文件的上传、删除
public ActionResult FileUpload() { Users users = new Users(); users = ( ...
- 爬虫之scrapy--基本操作
参考博客 :https://www.cnblogs.com/wupeiqi/p/6229292.html Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘, ...
- 程序员利器Tmux使用手册
转:https://blog.csdn.net/chenqiuge1984/article/details/80132042
- Python Learning: 01
After a short period of new year days, I found life a little boring. So just do something funny--Py ...
- macos 远程 windows 10
使用的工具:Parallels Client 免费,可以从windows store 免费下载: 只有这个最好用,希望能帮到你.和原生的windows 远程桌面功能很像:
- PHP面向对象的小总结
面向对象特性: *重用性 (每个模块都可以在项目中重复使用) *灵活性 (每个模块都很轻松被替换更改的) *拓展性(在模块上添加新功能是很方便的) 类和对象的关系(类生成对象) 物以类聚:相同特性的 ...