如果我的应用程序中有两个活动,一个是listview,另一个是mapview,它们都使用相同的数据(第一个显示列表,另一个显示地图上的图钉)我应该使用IntentService来提供数据给他们两个?如果是这样,我应该使用已启动的服务或绑定服务方法吗?
答案 0 :(得分:1)
您可以将活动绑定到服务,请参阅http://developer.android.com/reference/android/app/Service.html。
在Binder
中创建Service
界面的实现,例如
public class ServiceBinder extends Binder {
public MyService getService() {
return MyService.this;
}
}
在您的活动中,创建一个新的ServiceConnection
课程,该课程将用于授予您访问服务的权限:
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {
mMyService = ((MyService.ServiceBinder)service).getService();
}
public void onServiceDisconnected(ComponentName className) {
mMyService = null;
}
};
此处,成员变量mMyService
将允许您访问Service类的所有公共成员。
要创建连接,请在您的活动中实施doBindService
和doUnbindService
:
void doBindService() {
bindService(new Intent(this, MyService.class), mConnection, Context.BIND_AUTO_CREATE);
}
void doUnbindService() {
// Detach our existing connection.
unbindService(mConnection);
}
希望这有帮助!