实现服务组件
由于手机屏幕的限制,通常情况下在同一时刻仅有一个应用程序处于激活状态,并能够显示在手机屏幕上,因此,应用程序需要一种机制,在没有用户界面的情况下,能够长时间在后台运行,实现应用程序的特定功能,并能够处理事件或更新数据.Android系统提供了(Service)服务组件,它不直接与用户进行交互,却能够长期在后台运行。有很多情况需要使用Service,典型的例子就是:MP3播放器。
Service非常适用于无需用户干预,且需要长期运行的后台功能。Service没有用户界面,有利于降低系统资源。而且Service比Activity具有更高的优先级,只有在系统资源极度匮乏的情况下,android系统才可能清理掉一部分service来保证系统的运行,而这种情况却又轻易不会出现。即使Service被系统终止了,在系统资源恢复后Service也将自动恢复运行状态,因此可以认为Service是在系统中永久运行的组件。Service除了实现后台服务功能,还可以用于进程间通信,解决两个不同Activity应用程序进程之间的调用和通信问题。
注册组件(Android应用要求所有的应用组件都必须显示进行配置,说的就是4大组件)
startService
startService(Intent service)
Service如果是由activity startService启动,则经历
onCreate()--onStartCommand()----------onDestroy()
虽然Service存在的话,就不重复调用onCreate(),但是从onStartCommand()的命名应该可以看出,每次调用了startService()就会调用到它。
startService(Intent )启动过程很类似startActivity(Intent )
bindService
bindService(Intent service, ServiceConnection conn, int flags)
Service如果是由activity bindService启动,则经历
onCreate()--onBind()--onServiceConnected()---------onUnbind()--onDestroy()
如果启动了bindServie而没有unbindService,所在的Activity退出的时候也会有onUnbind()--onDestroy()但是有异常
但是如果没有启动而unbindService也会有异常
修改Service中的值
修改Service中的值,因为Service与界面交互比较特殊,使用广播组件可以实现通信,另一方面,使用bindService可以获取的正在运行的Service组件的实例或者创建一个Service并得到实例,进而可以调用Service的公共方法或者公共属性进行数据操作;
stopService只有在所有调用过bindServie的对象中都调了unBindService以后调才能使service的onDestroy被调用。
来看看怎么调用上面的方法进行修改numbe值;
这样就可以修改正在运行的Service实例的变量了。
由于Service组件没有Activity组件那么频繁使用,码得也不多,故记录。