Подождите, пока startService, прежде чем bindService - PullRequest
6 голосов
/ 01 августа 2011

Насколько я понимаю, если я хочу, чтобы служба работала, даже если с ней ничего не ограничено, то сначала ее нужно запустить с помощью startService (Intent i).

Мой вопрос - ЧТО, ЕСЛИ я хочупривязать к сервису сразу после его запуска, будет ли следующий код гарантировать, что сервис создан с помощью startService ()?

Статический метод в классе обслуживания:

public static void actStart(Context ctx) {
    Intent i = new Intent(ctx, BGService.class);
    i.setAction(ACTION_START);
    ctx.startService(i);
}

Операция привязки:

BGService.actionStart(getApplicationContext());    
bindService(new Intent(this, BGService.class), serviceConnection, Context.BIND_AUTO_CREATE);

Ответы [ 2 ]

0 голосов
/ 04 января 2014

Чтобы добавить ответ Бугдайчи, полный пример выглядит следующим образом:

       ServiceConnection myConnection = new ServiceConnection() { 
            @Override
            public void onServiceConnected(ComponentName className,
                    IBinder service) {
                    ... your code that needs to execute on service connection       

            }


    @Override
    public void onServiceDisconnected(ComponentName name) {
        ... your code that needs to execute on service disconnection

    } 
        };

        Intent intent = new Intent(this, TheServiceClassName.class);
        bindService(intent, myConnection, Context.BIND_AUTO_CREATE);

...

Без bindService в конце код onServiceConnected () не будет выполнен.

0 голосов
/ 26 июня 2012

Я не уверен, что вы пытаетесь сделать здесь, но "Context.BIND_AUTO_CREATE" создает службу, затем связывается с ней, даже если она еще не запущена.

Теперь, если вы хотите получить доступсразу после привязки вы можете использовать метод onServiceConnected () для serviceConnection:

 new ServiceConnection() { 
        @Override
        public void onServiceConnected(ComponentName className,
                IBinder service) {
            //put your code here...
        } ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...