service相关知识点

总结下相关的知识点吧,证明下自己还活着。

来张总结图:


service相关.jpg

生命周期

service生命周期的经历三个过程:创建->开始->销毁;两种启动方式来说明生命周期:
startService()->stopService():

  • 服务只创建一次,销毁一次,但是可以开始多次;
  • 多次点击startService(),onCreate()只会调用一次,onStartCommand()会调用多次,多次点击stopService(),onDestroy()也只调用一次;
    (onCreate()->onStartCommand()->onStartCommand()...->onDestroy)
  • 不调用stopService()停止服务,退出应用,服务还在,手动和内存不足等原因被杀死后,再次启动应用,自动启动服务;(该服务随Android系统的启动而启动,随Android系统的关闭或调用stopService方法后服务才停止)

bindService()->unbindService():

  • 但有时我们希望Service随Activity关闭服务后自动关闭,需要将Activity和Service绑定;
  • onCreate()->onBind()->onUnBind()->onDestroy();

多进程实现

1、进程实现

<pre>
<service
android:name=".service.MyService"
android:enabled="true"
android:exported="false"
android:process=":remote" />
</pre>

指定为远程服务后,再操作以上步骤,以bind方式启动就会出现崩溃,毕竟Activity和Service运行在不同的进程中,不能以这样的方式再建立关联;

2、跨进程通信:AIDL(Android Interface Definition Language)
Android系统进程之间不能共享内存,AIDL机制可以使不同进程之间进行通信;

具体实现不再叙述,网上有很多都很清楚的叙述了相关的步骤。主要的目的还是能够让多个应用程序共享一个服务功能

以上总结:

1. 后台运行:service服务在不显示界面的前提下在后台运行指定的任务,这样不影响用户做其他事情;
2. 注意:service任然是运行在主线程中的,一些耗时的任务还是需要开启子线程去处理;
3. 跨进程服务:实现不同进程间通信;

问题:说到多进程,不得不提进程优先级?进程如何保活?

进程优先级?进程如何保活?

待研究。。。

IntentService

一个基于Service类,处理异步请求,处理完成后自动停止服务。

Hongyang的博客:http://blog.csdn.net/lmj623565791/article/details/47143563

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言:本文所写的是博主的个人见解,如有错误或者不恰当之处,欢迎私信博主,加以改正!原文链接,demo链接 Serv...
    PassersHowe阅读 5,276评论 0 5
  • [文章内容来自Developers] Service是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。...
    岳小川阅读 4,332评论 0 7
  • 服务基本上分为两种形式 启动 当应用组件(如 Activity)通过调用 startService() 启动服务时...
    pifoo阅读 5,028评论 0 8
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-androi...
    eddy_wiki阅读 8,526评论 0 20
  • 生者百岁,相去几何。欢乐苦短,忧愁实多。何如尊酒,日往烟萝。---春日 西安碑林
    青央儿阅读 897评论 0 0