标签:
服务被启动后,会回调onStartCommand()方法, 如果这个服务是第一次创建,那么会调用onCreate()方法。服务启动之后会一直运行直到stopService()或stopSelf()方法被调用。虽然每调用一次 startService()方法,
但是服务只会存在一个实例。所以不管调用几次startService()方法,只需调用一次 stopService()或 stopSelf()方法,服务就会停止下来了。
调用 Context的bindService()方法,可以获取服务的连接,这时候就会调用服务的onBind()方法,返回IBinder对象的实例, 这样就能和服务进行通信了。只要和服务的连接没有断开,服务就会一直保持运行状态。
所以当调用startService()方法后,又去调用stopService()方法,这时服务中的onDestroy()方法就会执行,表示服务销毁。当调用了 bindService()方法后,又去调用unbindService()方法,onDestroy()方法也会执行。如果一个活动被调用了startService()和bindService()方法,那么我们就要同时调用stopService()和unbindService()方法,这样onDestory()方法才会被执行。
这些就遍历了服务的生命周期。
服务要在AndroidManifest.xml中注册
服务的创建:
public class LongRunningService extends Service { @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { super.onDestroy(); } }
onBind()方法是一个抽象类,所以必须实现它。当服务第一次调用时,就会调用onCreate(),调用onStartCommand()方法。 之后调用服务就不会在调用onCreate()方法,直接调用onStartCommand()方法。onDestory()方法
会在服务销毁时调用。
标签:
原文地址:http://www.cnblogs.com/sweat123/p/5918057.html