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(activityonStop()方法被调用)
    这样的进程们不会直接影响到用户体验,所以系统可以在任意时刻杀了它们从而为前台、可见、以及服务进程们提供存储空间。

空进程

没有运行任何component的进程,保留这个进程主要是为了缓存的需要,这种进程存在的唯一原因是做为缓存以改善组件再次于其中运行时的启动时间

绑定服务

     一旦服务开启,那么调用者和服务就有密切关系了,如果所有客户端被destroy 

   那么服务也就会被destroy。且可以调用服务内部中的方法。调用者被销毁前,需要对绑定的服务解绑。

    * 启动:bindService(Activity方法) -->onCreate(Service为空调用)-->onBind()

    * 交互:直接在Activity中拿到Service的实例或者Service的代理对象进行操作 

    * 关闭:unBindService(Activity方法)-->OnUnbind()-->ondestroy()

   案例:通过Service实现音乐播放  



Bind_Activity

Music_Service:




IService


0 0
原创粉丝点击