• 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也会跟着挂掉 .

  • 相关阅读:
    两个单向链表的第一个公共节点
    c字符输出
    堆排序
    归并排序
    LR中,URL -based script与HTML -based script区别
    loadrunner文本检查点
    Loadrunner集合点Rendezvous知识
    连接池(Connection Pool)技术
    lucene 查询 (转载)
    Lucene + Hadoop 分布式搜索运行框架 Nut 1.0a9转自http://www.linuxidc.com/Linux/2012-02/53113.htm
  • 原文地址:https://www.cnblogs.com/pbq-dream/p/5390797.html
Copyright © 2020-2023  润新知