我的理解是,如果我想要一个服务运行,即使没有任何限制,它必须首先使用startService(Intent i)启动。
我的问题是,如果我想在启动后立即绑定到服务,下面的代码是否保证使用startService()创建服务?
服务类中的静态方法:
public static void actStart(Context ctx) {
Intent i = new Intent(ctx, BGService.class);
i.setAction(ACTION_START);
ctx.startService(i);
}
绑定活动:
BGService.actionStart(getApplicationContext());
bindService(new Intent(this, BGService.class), serviceConnection, Context.BIND_AUTO_CREATE);
答案 0 :(得分:0)
我不确定你在这里尝试做什么,但是“Context.BIND_AUTO_CREATE”创建服务然后绑定到服务,即使它尚未启动。
现在,如果要在绑定后立即访问它,可以使用serviceConnection的onServiceConnected()方法:
new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className,
IBinder service) {
//put your code here...
} ...
答案 1 :(得分:0)
要添加Bugdayci的答案,完整的示例如下:
ServiceConnection myConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className,
IBinder service) {
... your code that needs to execute on service connection
}
@Override
public void onServiceDisconnected(ComponentName name) {
... your code that needs to execute on service disconnection
}
};
Intent intent = new Intent(this, TheServiceClassName.class);
bindService(intent, myConnection, Context.BIND_AUTO_CREATE);
...
最后没有bindService,onServiceConnected()代码将不会执行。