android 获取service 实例化,在Activity中,如何获取service对象?a.可以通过直接实例化得到。b.可以通过绑定得到。c.通过star - 众答网问答...
时间: 2024-03-06 16:51:21 浏览: 24
在Activity中获取Service对象通常使用绑定方式,可以通过以下步骤实现:
1. 在Activity中定义ServiceConnection对象,用于连接Service。
2. 调用bindService()方法连接Service,并传入ServiceConnection对象。
3. 在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 onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@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()方法解除连接。