service相关知识点

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

来张总结图:


service相关知识点_第1张图片
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、进程实现


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

指定为远程服务后,再操作以上步骤,以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

你可能感兴趣的:(service相关知识点)