在 Activity 中,如何获取 service 对象( ) A. 可以通过直接实例化得到。 B. 可以通过绑定得到。 C. 通过 startService() D. 通过 getService()获取
时间: 2024-03-06 17:51:21 浏览: 17
在 Activity 中获取 service 对象通常使用绑定(bind)方式。因此,选项 B 为正确答案。
使用 bindService() 方法连接 service,然后在 ServiceConnection 的 onServiceConnected() 方法中获取 service 对象。
示例代码:
```
public class MyActivity extends Activity {
private MyService myService;
private boolean isBound = false;
private ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className, IBinder service) {
MyService.MyBinder binder = (MyService.MyBinder) service;
myService = binder.getService();
isBound = true;
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
isBound = false;
}
};
@Override
protected void onStart() {
super.onStart();
Intent intent = new Intent(this, MyService.class);
bindService(intent, connection, Context.BIND_AUTO_CREATE);
}
@Override
protected void onStop() {
super.onStop();
if (isBound) {
unbindService(connection);
isBound = false;
}
}
}
```
在上述代码中,MyService 是自定义的 service 类,MyService.MyBinder 是用于获取 service 对象的 Binder 类。在 onStart() 方法中,通过调用 bindService() 方法连接 service,并在 onServiceConnected() 方法中获取 service 对象。在 onStop() 方法中,通过调用 unbindService() 方法解除连接。