关于android 0进程1服务的意思

Hi all。

一直不了解service和线程的区别,网上都说生命周期不一样,我在application里开的线程生命周期就跟app一致了,和在service里开线程效果一样啊,作为四大组件之一的service就这么水吗?其实不然,有时我们可能需要app被杀死但不希望某些任务被中断,如下载文件,下面我们进行分析。(这里谈的是本地服务,远程服务运行在不同进程就不多说了)

有时我们查看有什么程序正在运行的时候会看到如下所示的

这时,会有疑惑,为什么进程都没了,服务还在,难道服务和app不在同个进程?

首先,在设置-应用里看到的一项代表一个进程,所以这里显示在同一行的进程和服务是在同一个进程里。但这里显示的是这个app占用的进程数,app被杀死后,该服务独占了整个进程,所以这里就有了上图的情况。

对service不是十分了解的人会说,service不是在app里启动的吗?为什么app死了,服务还在?

service有两种启动方式,一种用startservice、另一种是bindservice。前者启动之后是独立于app运行的,只要没有主动停止该服务,就会一直运行,直到被主动停止或系统回收。后者通过绑定形式启动,生命周期跟被绑定的组件一致。

在application里开线程里做耗时任务是可以脱离activity的生命周期,但有时避免不了app被用户杀掉,但某些重要数据还没来得及保存的情况,这时我们可以把一些重要的信息放到service里进行保存操作,操作完成后再停掉service。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值