用于ServiceConnection回调的线程(Android)

时间:2010-05-10 22:58:56

标签: java android service multithreading serviceconnection

我正在开发一个绑定到本地服务的活动(在活动的onCreate中):

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

我希望能够在生命周期方法中通过IBinder调用方法,但不能确定在这些方法之前调用了onServiceConnected。我正在考虑通过在ServiceConnection实现中添加一个排序队列来处理这个问题,以便在建立连接后执行方法调用(命令模式)。

我的问题是

  1. 这是愚蠢的,更好的方法吗? :)
  2. 是否有任何规范用于执行ServiceConnection回调的线程?更重要的是,我是否需要担心同步队列数据结构?
  3. 编辑 - 类似于:

    public void onServiceConnected(ComponentName name, IBinder service) {
        dispatchService = (DispatchAsync)service;
    
        for(ExecutionTask task : queue){
            dispatchService.execute(task.getCommand(), task);
        }
    }
    

1 个答案:

答案 0 :(得分:0)

  

是否有任何规格   线程将用于执行   ServiceConnection回调?

它应该在主应用程序线程上调用,就像任何其他回调一样。

  

更重要的是,我需要担心吗?   关于同步队列   数据结构

这取决于您将对象添加到队列的位置。如果它只来自主应用程序线程,则应该没有争用,AFAIK。