在bindService之前等待startService

时间:2011-08-01 08:58:55

标签: android android-service

我的理解是,如果我想要一个服务运行,即使没有任何限制,它必须首先使用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);

2 个答案:

答案 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()代码将不会执行。