2013-06-18 2 views
4

Я вызываю bindService на службе MessengerService. Он работает нормально. После этого я вызываю startService.Что произойдет, если я вызову startService после вызова bindService в классе службы?

код точно так же, как эта ссылка Remote службы мессенджер пример раздела http://developer.android.com/reference/android/app/Service.html за исключением добавить StartService активности

Это код клиента: Намерение intnt = новый Intent (контекст, MessengerService.class); intnt.putExtra ("msg", "String от активности до обслуживания обработчику 11");

bindService(intnt, mConnection, Context.BIND_AUTO_CREATE); 

    intnt.putExtra("msg", "String from activity to service to handler 22");  

    startService(intnt); 

В коде службы: В onStartCommand, независимо от сообщения я получаю в намерениях, который передается в StartService, я отправить его обратно в обработчик клиента.

Я получаю индекс из связанного исключения в строке mClients.get (0) .send (msg1). mClients - это массив клиентов, подключенных к этой службе и хранящихся во время процесса привязки.

код точно так же, как эта ссылка Remote служба мессенджера пример раздела http://developer.android.com/reference/android/app/Service.html кроме Я добавляю onStartCommand в службе

@Override 
public int onStartCommand(Intent intent, int flags, int startId){ 

    String str = intent.getStringExtra("msg"); 
    Message msg1 = Message.obtain(null, MSG_STR_VALUE); 
    Bundle data = new Bundle(); 
    data.putString("message", str); 
    msg1.setData(data); 

    System.out.println(str); 
    try { 
     s1.acquire(); 
    } catch (InterruptedException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 
    try { 
     mClients.get(0).send(msg1); 
    } catch (RemoteException e) { 
     e.printStackTrace(); 
    } 

    return START_STICKY; 
} 
+0

Вы проверили, добавлен ли какой-либо объект в mClients? – bogdan

ответ

1

Вы можете найти ответ на вопрос here.

Service lifecycle flow chart

В частности, нет порядка, onStartCommand() и onBind() называются

Я искал сам ответ, который был на удивление трудно найти, когда я побежал в свой вопрос, поэтому я отправляю его, поскольку другие могут сочтет это полезным.

Смежные вопросы