Сервис для предоставления данных в ListActivity и MapAcitivity - PullRequest
0 голосов
/ 01 апреля 2012

Если в моем приложении есть две операции, одна с просмотром списка, а другая с просмотром карты, и они обе используют одни и те же данные (первая показывает список, а другая показывает булавки на карте), следует ли мне использовать IntentService для предоставленияданные для них обоих?Если да, то лучше ли мне использовать запущенный сервис или связанный сервис?

1 Ответ

1 голос
/ 01 апреля 2012

Вы можете привязать свою деятельность к услуге, см. 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);
}

Надеюсь, это поможет!

...