Service相关知识

先从生命周期说起吧:

首先他有三个生命周期,分别是:onCreate(),onStartCommand(),onDestroy()。

首先(第一次)当服务被启动了调用,会调用onCreate(),onStartCommand(),第二次或者以后再启动这个服务的时候,只会调用onStartCommand(),因为onCreate()只会在还未创建的时候,会调用,而onDestroy(),顾名思义,服务被销毁的时候会被调用。

我们再来看看服务的启动方式:

    有两种,分别是:startService();bindService();

我们看到这里,是不是会想,这两种启动方式有什么区别吗?

        答:按我理解的话,我是这样想的,startService()只是启动了服务,可以在后台运行了,但是我们想对这个服务做什么的时候,我们是没办法的,所以我们如果想让服务跟Activity进行通信,就必须通过bindService(),进行绑定,通过onBind()返回的IBinder对象进行通信,


这里我们首先创建了一个ServiceConnection的匿名类,在里面重写了onServiceConnected()方法和onServiceDisconnected()方法,这两个方法分别会在Activity与Service建立关联和解除关联的时候调用。在onServiceConnected()方法中,我们又通过向下转型得到了MyBinder的实例,有了这个实例,Activity和Service之间的关系就变得非常紧密了。现在我们可以在Activity中根据具体的场景来调用MyBinder中的任何public方法,即实现了Activity指挥Service干什么Service就去干什么的功能。

其实销毁服务也是需要一门学问的

    我们都知道启动服务可以startService(),销毁服务就直接调用stopService(),还有bindService()启动服务,UnbindService()解绑销毁服务,很简单没错是这样,但是你有没有试过先调用startService(),然后再调用bindService(),这个时候你会发现你单独点击stopService()或者UnbindService(),服务是不会被销毁的,那要怎样才会被销毁呢?其实要两个都要点击才行,StopService()只是停止服务,Unbindservice()会让Service和Activity解除关联,一个Service必须要在既没有和任何Activity关联又处理停止状态的时候才会被销毁。

你可以参照一下郭神的这篇文章:Android Service完全解析,关于服务你所需知道的一切(上)

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

推荐阅读更多精彩内容

  • 简述 Service作为Android的四大组件之一,使用频率仅次于Activity,使用时需在manifest进...
    s1991721阅读 806评论 1 1
  • 【Android Service】 Service 简介(★★★) 很多情况下,一些与用户很少需要产生交互的应用程...
    Rtia阅读 3,174评论 1 21
  • 茫然回首,我们也青春过,幻想过。幻想自己会遇到什么样的你?你一定是个漂亮、温柔、大方,有理想、有计划、有主见...
    宏_06bd阅读 267评论 1 1
  • 我已经不是很记得,第一次见他时他是什么样子了。那是新学期的第一节咖啡课,我翘掉半节去听林徽因的讲座。我不喜欢林徽因...
    等等喋喋在一起阅读 248评论 0 0
  • 1 缘来落英艳 缘去浮萍远 缘起缘灭只在一念 2 我走过很长的路 却未踏上你走过的足迹 可我从未放弃那未走过的路 ...
    胆怯的小丑阅读 174评论 0 0