声明后在onCreate中访问Android服务

时间:2011-10-18 16:06:11

标签: android

当我运行以下代码时,服务值为null。但是,如果我从onCreate之外的东西(如按钮)调用它,它就可以工作。

如何在没有用户输入的情况下从onCreate方法访问它。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    getApplicationContext().bindService(new Intent(ISoundControlService.class.getName()),
         serConnSound, Context.BIND_AUTO_CREATE);
    try {
        soundService.start();
    } catch (RemoteException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

更新: 获得服务......

private ServiceConnection serConnSound = new ServiceConnection() {
     @Override
     public void onServiceConnected(ComponentName name, IBinder service) {
         soundService = ISoundControlService.Stub.asInterface(service);
     }

     @Override
     public void onServiceDisconnected(ComponentName name) {
        soundService = null;
     }
};

1 个答案:

答案 0 :(得分:1)

我会说:你不能

这就是ServiceConnection的重点。它是异步初始化的,你必须处理这个事实。当onServiceConnected被调用时,您的服务将可用。只要您等待该回调,您的服务变量就是null ...