2010-05-10 80 views
1

我正在開發能結合本地服務的活動:線程用於ServiceConnection回調(安卓)(在活動的onCreate)

bindService(new Intent(this, CommandService.class), svcConn, BIND_AUTO_CREATE); 

我希望能夠通過的IBinder調用方法在我的生命週期方法中,但不能確定onServiceConnected在這些之前被調用。我想通過在ServiceConnection實現中添加一系列排序來處理這個問題,以便在建立連接後執行方法調用(命令模式)。

我的問題是那麼

  1. 這是愚蠢的,任何更好的方法? :)
  2. 是否有任何線程將用於執行ServiceConnection回調的規範?更重要的是,我是否需要擔心同步隊列數據結構?

編輯 - 是這樣的:

public void onServiceConnected(ComponentName name, IBinder service) { 
    dispatchService = (DispatchAsync)service; 

    for(ExecutionTask task : queue){ 
     dispatchService.execute(task.getCommand(), task); 
    } 
} 

回答

0

是否有這 線程將被用於執行 ServiceConnection回調的任何規範?

它應該在主應用程序線程上調用,就像任何其他回調一樣。

更重要的一點,我需要擔心 有關同步隊列 數據結構?

這取決於您將對象添加到隊列的位置。如果它只來自主應用程序線程,那麼應該沒有爭用,AFAIK。