Android Service学习总结(上)

    本人是参照 郭神的博客进行学习 贴上郭神博客的地址  http://blog.youkuaiyun.com/guolin_blog/article/details/11952435
    作为一个Android基础不是很扎实的Android程序员,四大组件的学习是必不可少,废话不多说,看看我学到了什么吧。

Service:

         服务,它主要是用来在后台处理一些比较耗时的操作,或者是执行一些需要长期运行的任务。甚至于在我们的程序退出的情况下,也可以继续运行,例如我们的手机音乐播放器。

基本用法:

         启动:在Activity中通过 startService(new Intent(this, MyService.class))来进行启动,首次启动会调用MyService的onCreate()和onStartCommand()方法,非首次启动,只会不断的调用onStartCommand()方法。

         停止:在Activity中通过 stopService(new Intent(this, MyService.class))来进行停止,会调用MyService的onDestroy()方法。

         绑定:绑定指的是将Activity与Service进行绑定,这样Activity就可以命令Service做一些事情,而不是单纯的唤醒Service。

                    在Activity中通过 bindService(new Intent(this, MyService.class),connection,BIND_AUTO_CREATE)来进行绑定。

                          接下来对该方法里的参数逐一进行解释:

                          

                    connection是ServiceConnection的一个对象,我们可以看到,在ServiceConnection里有两个方法,一个是绑定关联                 之后执行的onServiceConnected()方法,这样可以在这里调用MyService里面的Binder的子类MyBinder的任何public方                   法,这样就实现了Activity去命令Service做一些相关的操作。但是你不要就误以为onServiceDisconnected()方法就是在失                 联之后调用的,这个方法只有在异常失联的情况下才回去调用,正常的unbind并不会调用该方法。

                   BIND_AUTO_CREATE:在直接bindService的情况下,先创建Service.

         解绑:解绑指的是将Activity与Service进行解绑。在Activity当中通过unbindService(connection)来进行解绑操作。

生命周期:

        1、startService - stopService    

             onCreate - onStartCommand - onDestroy

        2、bindService - unbindService

              onCreate - onDestroy

        3、startService - bindService - unbindService/stopService - stopService/unbindService

              onCreate - onStartCommand - onDestroy

              PS:Service只有在停止工作的状态同时与任何Activity都没有关联的时候才会被销毁。

Service与Thread:

        Service是运行在主线程,所以并不是异步的子线程。但是如果在Service里面做太多的耗时操作也是会影响UI线程出现ANR,所以我们可以在Service里面开新的线程去执行耗时的操作。

        例如:

                      

                            

前台Service:

                          防止系统因内存不够,而对Service进行回收,或者需要将一些信息一直展示给用户看。

                          在郭神的博客中,他是这样写的

                           

                             但是在相对较后面的API里面已经舍弃了new Notification的用法,和setLatestEventInfo方法,我自己查看源码解决如下:

                            



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值