为ListActivity和MapAcitivity提供数据的服务

时间:2012-04-01 08:02:24

标签: android android-listview android-service android-mapview

如果我的应用程序中有两个活动,一个是listview,另一个是mapview,它们都使用相同的数据(第一个显示列表,另一个显示地图上的图钉)我应该使用IntentService来提供数据给他们两个?如果是这样,我应该使用已启动的服务或绑定服务方法吗?

1 个答案:

答案 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类的所有公共成员。

要创建连接,请在您的活动中实施doBindServicedoUnbindService

void doBindService() {
    bindService(new Intent(this, MyService.class), mConnection, Context.BIND_AUTO_CREATE);
}

void doUnbindService() {
    // Detach our existing connection.
    unbindService(mConnection);
}

希望这有帮助!