绑定到已由BroadcastReceiver启动的服务会创建新的服务实例

时间:2011-05-15 19:42:48

标签: android service process ipc broadcastreceiver

我的应用程序使用由BOOT_COMPLETE BroadcastReceiver启动的服务,如下所示:

public void onReceive(Context context, Intent intent) {
    context.startService(new Intent(context, MyService.class));
}

如果在我的应用程序中的某个活动中,我尝试绑定到此服务:

getApplicationContext().bindService(new Intent(getApplicationContext(), MyService.class), 
    _serviceConnection, Context.BIND_AUTO_CREATE);

创建了一个新的服务实例,尽管第一个实例(由BroadcastReceiver创建)仍然在运行。我在服务的onCreate()方法和第一个中记录了进程ID service在与活动不同的进程中运行,第二个实例在与活动相同的进程中创建。我尝试在清单的service元素中设置一个android:process参数(两者都带有leading:和without),但结果保持不变。

如何绑定到在不同进程中运行的服务,而不是在运行该活动的进程中创建新实例?

1 个答案:

答案 0 :(得分:0)

我可以向你保证,但事实并非如此。无论您启动或绑定多少次,特定服务组件的一个实例一次只能处于活动状态。此外,该服务仅在一个进程中运行。它无法在不同的时间在不同的进程中运行。