Android----service服务

一.线程和进程
进程:
是一块独立内存控件,专门为某个应用程序去开辟的,进程中可以有多个线程.
线程 :是存在进程中,每个线程都会有自己的进程.

进程与线程的区别:
(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;
(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
(3)线程是处理器调度的基本单位,但进程不是.
4)二者均可并发执行. 

在一个应用程序启动时候 , 如果没有其他的组件正在运行着 , 那么   安卓系统会 创建一个  linux  的进程 ,  这个进程中 , 运行着 这个组件 .     

进程的生命周期: 安卓系统会尽可能 让一个应用程序的进程保持尽可能的长的时间 ...   但是最终也会 去移除一些老的进程 ,  去回收内存空间 , 以便于一些

新的进程或者更加重要的进程可以启动...


进程的5种级别,从高到底,如下:
          1.前台进程( --- foreground process ): 一个应用程序启动了,处于前台,可以直接响应用户的点击 ,  触摸事件 ( 获得焦点的状态 ),  那么这个时候就是属于前台进程 .  
          2.可视进程( ------ visible process ): 一个应用程序启动了,   不能直接去响应用户的点击 ,  触摸事件 , 但是仍然可以看得见 .  那么这个 应用程序的进程就是属于 可视进程 .  

          3.服务进程( ----- service process ): 一个程序退出了 ,  但是   仍热有一个服务在后台一直运行着 ,  这个时候这个应用程序的进程就是属于 服务进程 .
           4.后台进程( ---- background process ): 一个应用程序启动 ,  内部 没有 服务在运行 ,  只有 activity 运行着 , 然后点击了最小化 .  那么这个时候应用程序就是属于后台进程 .
          5.空进程( --- empty process ): 一个应用层 启动 , 又正常的退出了 ,  没有 任何其他的组件正在运行着 ,  那么这个时候 ,  这个进程就是属于 空进程 .

 

二.开启服务的生命周期:
onCreate():创建服务的时候调用;
onStartCommand():收到开启服务的命令的时候调用;
onDestroy():停止服务的时候调用;
onBlind():绑定服务的时候调用
onUnblind():解绑服务的时候调用

开启服务的时候,服务的生命周期如下:

1. 开启服务, 那么首先会创建服务的对象.  Oncreate执行, 然后onstartCommand 执行 .

2. 服务就一直在后台运行着. 干你想干的事儿..

3. 直到停止服务, 服务才销毁...


在开启服务的时候, 服务只能被开启一次, 重复去开启服务, 服务对象并不会新创建. 停止服务, 只会销毁服务对象一次.重复开启, 只会去重复调用 onstartCommand  , 并不会让服务重新创建.    


三.绑定服务的生命周期:
内存溢出(out of memory):内存不够用时,直接oom异常
内存泄漏(memory leak):在释放资源的时候,没有将必要的资源给关闭释放掉,就会出现内存泄漏

绑定服务的生命周期如下:


四:开启服务和绑定服务的区别:
开启服务:服务开启后一直在后台运行着,与Activity是否存在无关
绑定服务:可以去调用服务中的方法,开启服务的Activity销毁了,则这个绑定的服务也销毁了


五.编写一个服务的具体步骤:

第一步:

    写个类去继承 Service ,并且重写 onCreate方法,  是服务在创建的时候会调用的方法 , 可以在oncreate中去

    干耗时的事儿, 但是这个耗时的事必须运行在子线程中

第二步:

   在清单文件中进行注册. 

第三步:

 某个地方,执行代码的时候,去启动服务

   点击一个按钮后,去开启服务

   
   
  1. Intent intent =newIntent();
  2. intent.setClass(this,HelloService.class);
  3. //启动服务
  4. startService(intent);


注意点 :

1. 服务也是运行在主线程中,所以服务所在的线程不能被阻塞. 如果要干耗时的事儿, 必须写到子线程中

2. 服务与activity的类似的,只不过服务没有界面. 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值