Service的应用思路

-service 的作用:

                          与activity类似,都代表可执行的程序,service主要用于不需要与用户进行界面交互的场合,因为service没有界面。

service 的好处:

                           为避免Activity中的代码过多,使得代码不便于理解,可以将不需要于用户界面进行交互的代码写在Service中,

          便于自己和别人读取。 

 service启动的两种方式:

                     1.   startService()   方法                    2.bindService()方法

                   1.定义service的子类继承Service,在Service中定义oncreate()方法(在service被创建时回调,从此以后不再执行),定义onStartContent()方法

        (每次启动service时都会调用该方法,多次启动service时都会执行该方法), 在activity中,开启service,在合适的场合调用    startService();

                     service与访问者之间没有关联,即使访问者退出了,Service也仍然运行,所以必须调用stopService() 访问来停止service,防止发生OOM(内存溢出)

           最后销毁 onDestroy() ;

                    适用范围: 访问者与Service之间无法进行数据交换、通信。

                  

                   2.  public boolean bindService(Intent service, ServiceConnection conn, int flags) {
     
                                          return super.bindService(service, conn, flags);
                         }

                       在Activity中定义bindService() 方法(该方法只会执行一次), 其中他们的参数依次为

                                     (1)  service 为需要进行绑定的Service ;  

                                     (2).conn 为ServiceConnection对象,当service与activity连接成功后,会回调该对象的 onServiceConnected(ComponentName name,

                           IBinder service)方法   (其中service为在 Service类 中定义的IBinder对象) , 当发生异常终止后,会回调该对象的

                           onServiceDisconnected(ComponentName  name) 方法。

                       在Service类中,定义onCreate() 方法,定义IBinder  onBind(Intent intent)方法,在绑定Service的情况下,onBind(Intent intent)  方法返回的IBinder对象将会传给

              Activity类中的service参数,  这样访问者就可通过该IBinder对象与Service进行通信了(该IBinder对象为    继承Binder的子类(例 :MyBinder)所创建的对象)。

               然后就可以通过MyBinder 对象来访问Service的运行状态了,然后解除绑定  onUnbind()  ,最后销毁  onDestroy() 。


    service的生命周期:

          1. startService()    onCreate()    onStartCommand()(若多次启动则会一直调用) onStopService()(被访问者调用)   onDestroy() 

                  2.  bindService()    onCreate()    onBind()(与Service绑定)    onUnbind()   onDestroy()


           自己对service的一些见解,能力有限,写的不好,请多多指点。










阅读更多
下一篇自定义View
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭