Android 面试题之Service干货篇(1)

bindService

  • 1.使用bindService()方法启动Service

绑定模式使用bindService()方法启动Service,其格式如下:

bindService(Intent service,ServiceConnection conn,int flags);

其中的参数说明如下:

  • service:该参数通过Intent指定需要启动的service。

  • conn:该参数是ServiceConnnection对象,当绑定成功后,系统将调用serviceConnnection的onServiceConnected ()方法,当绑定意外断开后,系统将调用ServiceConnnection中的onServiceDisconnected方法。

  • flags:该参数指定绑定时是否自动创建Service。如果指定为BIND_AUTO_CREATE,则自动创建,指定为0,则不自动创建。

绑定方式中,当调用者通过bindService()函数绑定Service时,onCreate()函数和onBinde ( )函数将被先后调用。

「通过该方式启动Service,访问者与Service绑定在一起,访问者一旦退出了,Service也就终止了。」

  • 2.使用unbindService()方法取消绑定

取消绑定仅需要使用unbindService()方法,并将ServiceConnnection传递给unbindService()方法。

但需要注意的是,unbindService()方法成功后,系统并不会调用onServiceConnected(),因为onServiceConnected()仅在意外断开绑定时才被调用。

当调用者通过unbindService()函数取消绑定Service时,onUnbind()函数将被调用。如果onUnbind()函数返回true,则表示重新绑定服务时,onRebind ()函数将被调用。

startService样例

  • 1.创建StartService.java继承自Service类,重写onCreate()方法、onStartCommand()方法、onBind()方法、onDestroy()方法,其代码如下:

public class StartService extends Service {

@Override

public void onCreate() {

super.onCreate();

MLog.e(getClass().getName(), “onCreate”);

}

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

MLog.e(getClass().getName(), “onStartCommand”);

return super.onStartCommand(intent, flags, startId);

}

@Override

public void onDestroy() {

MLog.e(getClass().getName(), “onDestroy”);

super.onDestroy();

}

@Nullable

@Override

public IBinder onBind(Intent intent) {

return null;

}

}

  • 2.创建ServiceActivity.java和配套的activity_service.xml文件,其代码如下:

public class ServiceActivity extends ActivityBase {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_service);

Intent intentStart = new Intent(ServiceActivity.this, StartService.class);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值