zoukankan      html  css  js  c++  java
  • Service的生命周期

    Service启动的方式1  start:

     Activity.startService(intent); 开启

     Activity.stopService(intent);  停止

     Service的运行的生命周期为:

         onCreate();   onStartCommand(); onDestroy();

        如果Service已经启动 则不会再调用onCreate();会直接调用onStartCommand();

    在当前Activity中启动Service ,可以在另一个Activity中停止Service;

    如果当前app关闭,没调用stopService,Service会继续在后台运行;

    Service启动方式2 binder:

    Activity.bindService(); 绑定

    Activity.unbindService(); 解除绑定

    Service的生命周期为

      onCreate(); onBind(); onUnbind(); onDestroy();

    如果当前Activity Finish();关闭后,会自动调用unbindService(),解除绑定;

    Service会调用onDestroy();关闭服务;

    当两种方式组合使用时

    启动:

       Activity.startService(intent);

       Activity.bindService();

    停止:(要调两个方法才能停止Service)

        Activity.stopService(intent)

        Activity.unbindService();

    组合使用启动时 

      Activity.startService(intent);

         Activity.bindService();

      如果Service的 public boolean onUnbind(Intent intent) 返回true时

       调用Activity.unbindService();

      下次调用Activity.bindService();时;不会再调用onBInd(); 而是调用onRebind();

     Start Service 和Bind Service 的区别 :

     1.通过startservice开启的服务.一旦服务开启, 这个服务和开启他的调用者之间就没有任何的关系了. 
    调用者不可以访问 service里面的方法. 调用者如果被系统回收了或者调用了ondestroy方法, service还会继续存在  。
    2.通过bindService开启的服务,服务开启之后,调用者和服务之间 还存在着联系 , 
    一旦调用者挂掉了.service也会跟着挂掉 .

  • 相关阅读:
    Elasticsearch 内存配置应用案例
    shell进阶篇之字典和数组结合应用案例
    shell进阶篇之数组应用案例
    nginx的负载均衡
    nginx的反向代理
    ajax的几种使用
    springboot整合Redis
    java的Spring中@Value注解的使用
    Redis的五种数据类型
    冒泡排序
  • 原文地址:https://www.cnblogs.com/pbq-dream/p/5390797.html
Copyright © 2011-2022 走看看