android 获取service 实例化,在Activity中,如何获取service对象?a.可以通过直接实例化得到。b.可以通过绑定得到。c.通过star - 众答网问答...
时间: 2024-03-18 19:38:59 浏览: 14
b. 可以通过绑定得到。在Activity中,可以通过调用`bindService()`方法与Service进行绑定,然后通过ServiceConnection回调接口获取Service实例。具体流程如下:
1. 创建一个ServiceConnection对象:
```java
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
// 获取Service实例
MyService.MyBinder binder = (MyService.MyBinder) iBinder;
mService = binder.getService();
}
@Override
public void onServiceDisconnected(ComponentName componentName) {
mService = null;
}
};
```
2. 调用`bindService()`方法绑定Service:
```java
Intent intent = new Intent(this, MyService.class);
bindService(intent, mConnection, BIND_AUTO_CREATE);
```
3. 当Service与Activity绑定成功时,`onServiceConnected()`方法会被调用,通过`IBinder`对象获取Service实例。
4. 当Activity销毁时,需要解除与Service的绑定,可以在`onDestroy()`方法中调用`unbindService()`方法:
```java
@Override
protected void onDestroy() {
super.onDestroy();
unbindService(mConnection);
}
```
这样就可以在Activity中获取到Service的实例对象了。