【问题标题】:Thread used for ServiceConnection callback (Android)用于 ServiceConnection 回调的线程 (Android)
【发布时间】:2010-05-10 22:58:56
【问题描述】:

我正在开发一个绑定到本地服务的活动(在活动的 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);
    }
}

【问题讨论】:

    标签: java android service multithreading serviceconnection


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-02-02
      • 2015-04-06
      • 2012-02-11
      • 1970-01-01
      • 2018-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多