Service学习笔记

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;
    }
    ...
}

猜你喜欢

转载自blog.csdn.net/nishuosh2/article/details/80670760