1.生命周期
四个手动调用的方法
手动调用的方法 | 作用 |
startService( ) | 启动服务 |
stopService( ) | 关闭服务 |
bindService( ) | 绑定服务 |
unbindService( ) | 解绑服务 |
五个内部自动调用的方法
内部自动调用的方法 | 作用 |
onCreat( ) | 创建服务 |
onStartCommand( ) | 开始服务 |
onDestory( ) | 销毁服务 |
onBind( ) | 绑定服务 |
onUnbind( ) | 解绑服务 |
其中:
1. onCreat( )和onStartCommand( )的区别:onCreat( )方法实在服务的第一次创建的时候调用,而onStartCommand( )方法则再每次启动服务的时候均会调用。但是每个服务只会存在一个实例。
2. 服务启动了之后会一直保持运行状态,直到stopService( )或者stopSelf( )方法被调用。
3. 当调用了startService( )之后再去调用stopService( ),这是服务中的onDestory( )方法将会被调用,表示服务已经被销毁。同理bindService( )方法和unbindService( )方法类似,但是如果其即调用了startService( )方法有调用了bindService( )方法,那么该服务必须满足stopService( )和unbindService( )两种条件onDestory( )方法才被执行。
2. 活动与服务通信
如果自定义一个MyService来继承Service的话,可以看到onBind( )方法是Service中唯一的一个抽象方法:
public class MyService extends Service { @Nullable @Override public IBinder onBind(Intent intent) { return null; } }
下面是创建一个专门的Binder来对下载功能进行管理的代码
public class MyService extends Service{ private DownloadBinder mBinder = new DownloadBinder(); class DownloadBinder extend Binder{ public void startDownload(){ Log.d("MyService", "startDownload executed"); } public int getProgress(){ Log.d("MyService", "getProgress executed"); return 0; } } @Override public IBinder onBind(Intent intent){ return mBinder; } ... }