当我运行以下代码时,服务值为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;
}
};
答案 0 :(得分:1)
我会说:你不能
这就是ServiceConnection
的重点。它是异步初始化的,你必须处理这个事实。当onServiceConnected
被调用时,您的服务将可用。只要您等待该回调,您的服务变量就是null
...