service绑定示例
来源:互联网 发布:户型图平面设计软件 编辑:程序博客网 时间:2024/06/07 02:08
Android进程等级
Android系统会尽量维持一个进程的生命,直到最终需要为新的更重要的进程腾出内
存空间。为了决定哪个进程该终止,系统会跟据运行于进程内的组件的和组件的状态把进程置于不同的重要性等级。
Android进程共分为五个等级,分别是:前台进程(Foreground Process),可视进程( Visible Process), 服务进程(Service Process), 后台进程(Background Process), 空进程(Empty Process)
前台进程等级最高,空进程等级最低,系统需要内存资源时,会优先回收等级低的进程,比如空进程、后台进程等
* 前台进程
用户当前正在做的事情需要这个进程。如果满足下面的条件,一个进程就被认为是前台进程:
1)这个进程拥有一个正在与用户交互的Activity
2)这个进程拥有一个绑定到正在与用户交互的activity上的Service。
3)这个进程拥有一个前台运行的Service — service调用了方法
startForeground().
4)这个进程拥有一个正在执行其任何一个生命周期回调方法(onCreate(),onStart(
或onDestroy())的Service。
5)这个进程拥有正在执行其onReceive()方法的BroadcastReceiver。
* 可视进程
一个进程不拥有运行于前台的组件,但是依然能影响用户所见。满足下列条件时,进程即为可见:
1)这个进程拥有一个不在前台但仍可见的Activity(它的onPause()方法被调用)。
2)这个进程拥有一个绑定在前台(或者可见)Activity的服务。
一个可见的进程是极其重要的,通常不会被终止,除非内存不够,需要释放内存以便前台进程运行。
* 服务进程
一个进程不在上述两种之内,但它运行着一个被startService()所启动的service。
尽管一个服务进程不直接影响用户所见,但是它们通常做一些用户关心的事情(比如播放音乐或下载数据),所以除非系统没有足够的空间运行前台进程和可见进程时才会终止一个服务进程。
* 后台进程
一个进程拥有一个当前不可见的activity(activity的onStop()方法被调用)。
这样的进程们不会直接影响到用户体验,所以系统可以在任意时刻杀了它们从而为前台、可见、以及服务进程们提供存储空间。
* 空进程
没有运行任何component的进程,保留这个进程主要是为了缓存的需要,这种进程存在的唯一原因是做为缓存以改善组件再次于其中运行时的启动时间
绑定服务
一旦服务开启,那么调用者和服务就有密切关系了,如果所有客户端被destroy了
那么服务也就会被destroy。且可以调用服务内部中的方法。调用者被销毁前,需要对绑定的服务解绑。
* 启动:bindService(Activity方法) -->onCreate(Service为空调用)-->onBind()
* 交互:直接在Activity中拿到Service的实例或者Service的代理对象进行操作
* 关闭:unBindService(Activity方法)-->OnUnbind()-->ondestroy()
案例:通过Service实现音乐播放
Bind_Activity:
Music_Service:
IService:
- service绑定示例
- Service绑定本类对象的示例
- 绑定Service
- Service 绑定
- 绑定Service
- Service 绑定
- 绑定Activity和Service
- service(服务绑定)
- Activity和Service绑定
- service(服务绑定)
- Activity 和Service绑定
- Service 和 Activity 绑定
- Activity 和Service绑定
- 解除Service绑定
- Android:Service非绑定
- Activity 和Service绑定
- 绑定Activity和Service
- 绑定活动的service
- yii框架中的两表联查+分页
- DynamicMethod:更接近IL
- malloc和new的区别
- 快速掌握ThreadLocal
- webstorm快捷键大全
- service绑定示例
- noip2015提高组初赛(答案+选择题题目+个人分析)
- 低频时码授时技术与中国电波钟表发展历程简介
- 关于maven导入工程pom文件报错问题及解决
- 面向对象和原型知识点
- 【.Net码农】C#获取实体类属性名和值 | 遍历类对象
- [HDU 5696] 区间的价值 (单调栈+RMQ)
- 如何对 Chromium 去谷歌化
- Emit常用Opcodes指令使用方法(含实例)