2013-06-18 25 views
4

我在服務MessengerService上調用bindService。它工作正常。之後,我打電話給startService。如果在調用服務類上的bindService後調用startService,會發生什麼情況?

的代碼是作爲此鏈接的遠程通訊服務實施例部分 http://developer.android.com/reference/android/app/Service.html 完全相同除我在活動

添加startService這是客戶端代碼: 意圖intnt =新意圖(上下文,MessengerService.class); intnt.putExtra(「msg」,「從活動到服務到處理程序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是連接到此服務並在綁定過程中存儲的客戶端數組。

的代碼是此鏈接遠程通訊服務例如部分 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()被稱爲

我一直在尋找自己的答案這是令人驚訝的很難找到,當我跑在你的問題帖子,所以我張貼它,因爲其他人可能會覺得它有用。

相關問題