发帖后发现这些:
http://code.google.com/p/android/issues/detail?id=2665 http://code.google.com/p/android/issues/detail?id=2665http://code.google.com/p/android/issues/detail?id=2483
MyApp - first Activity that calls startService();
AwesomeService - background Service that starts a "connection" thread
ConnectedActivity - Activity with code to handle connection and service binding
MyAppActivity - Tabbed Activity
TabAActivity - Tab Activity
我有一个名为 ConnectedActivity 的 Activity 基类。在此类中,我处理与连接到远程系统的后台服务的绑定。 ConnectedActivity 还具有观察者方法,用于捕获连接中的更改以及来自服务的其他通知。
对于我的其他需要“连接”的活动,我只需扩展 ConnectedActivity。
我开发了一个选项卡式活动,其中选项卡也是活动。对于选项卡式活动和每个选项卡,我需要扩展 ConnectedActivity。
我遇到的问题是,当我加载选项卡式活动(和选项卡活动)时,它是绑定到服务的唯一活动。选项卡活动不绑定到服务。
下面,serviceBound() 是我在 ConnectedActivity 类中实现的回调,以便扩展 ConntectedActivity 的类可以在服务绑定后采取操作。您可以从我的日志文件中看到,只有 MyAppActivity 实际绑定。
是否可以将多个 Activity 绑定到一个 Service?
EDIT:找到了这个here http://developer.android.com/guide/topics/fundamentals/bound-services.html
多个客户端可以同时连接到该服务。但是,系统仅在第一个客户端绑定时调用 >service 的 onBind() 方法来检索 IBinder。然后系统将相同的 IBinder 传递给任何绑定的其他客户端,而无需再次调用 onBind()
所以现在我真正的问题是..这是否意味着回调(onServiceConnected()和onServiceDisconnected)不会在绑定的“第二个”活动中被调用?
结束编辑:
12-31 02:40:00.625: I/MyApp(31345): onCreate(Bundle savedInstanceState)
12-31 02:40:00.705: I/AwesomeService(31345): onCreate()
12-31 02:40:00.705: I/AwesomeService(31345): onStartCommand(Intent intent, int flags, int startId)
12-31 02:40:00.725: I/ConnectedActivity(31345): onCreate(Bundle savedInstanceState)
12-31 02:40:00.725: I/MyAppActivity(31345): onCreate(Bundle savedInstanceState)
12-31 02:40:00.836: I/ConnectedActivity(31345): onCreate(Bundle savedInstanceState)
12-31 02:40:00.836: I/TabAActivity(31345): onCreate(Bundle savedInstanceState)
12-31 02:40:00.896: I/ConnectedActivity(31345): onStart()
12-31 02:40:00.896: I/TabAActivity(31345): onStart()
12-31 02:40:00.956: I/ConnectedActivity(31345): onStart()
12-31 02:40:00.966: I/MyAppActivity(31345): onStart()
12-31 02:40:00.966: I/ConnectedActivity(31345): onResume()
12-31 02:40:00.966: I/MyAppActivity(31345): onResume()
12-31 02:40:00.966: I/ConnectedActivity(31345): onResume()
12-31 02:40:00.966: I/TabAActivity(31345): onResume()
12-31 02:40:00.976: I/AwesomeService(31345): onBind(Intent intent)
12-31 02:40:01.056: I/ConnectedActivity(31345): onServiceConnected(ComponentName className, IBinder service)
12-31 02:40:01.056: I/AwesomeService(31345): LocalBinder:getService()
12-31 02:40:01.056: I/MyAppActivity(31345): serviceBound()
我还希望看到:
AwesomeService(31345): onBind(Intent intent)
ConnectedActivity(31345): onServiceConnected(ComponentName className, IBinder service)
AwesomeService(31345): LocalBinder:getService()
TabAActivity(31345): serviceBound()