美文网首页
service相关知识点

service相关知识点

作者: 倩shrimp | 来源:发表于2017-03-28 15:28 被阅读8次

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

    来张总结图:


    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

    相关文章

      网友评论

          本文标题:service相关知识点

          本文链接:https://www.haomeiwen.com/subject/oyljottx.html