声明后在onCreate中访问Android服务
当我运行以下代码时,服务值为null。然而,如果我从onCreate之外的东西调用它(比如按钮),它就会工作 在没有用户输入的情况下,我如何从onCreate方法访问它声明后在onCreate中访问Android服务,android,Android,当我运行以下代码时,服务值为null。然而,如果我从onCreate之外的东西调用它(比如按钮),它就会工作 在没有用户输入的情况下,我如何从onCreate方法访问它 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); getApplicationContext().bi
@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;
}
};
我会说:你不能
这就是ServiceConnection
的全部要点。它是异步初始化的,您必须处理这个事实。调用服务连接时,您的服务将可用。只要您在等待回调,您的服务变量将是null
…我会说:您不能
这就是
ServiceConnection
的全部要点。它是异步初始化的,您必须处理这个事实。调用服务连接时,您的服务将可用。只要您在等待该回调,您的服务变量将是null
…Hmm。。如何初始化soundService变量?有关更多信息,请参阅更新。。如何初始化soundService变量?有关更多信息,请参阅更新。因此,正确的处理方法是使用广播接收器调用该方法并从OnService连接广播。我不明白您的意思bindService
请求服务,服务启动并准备好使用后,将立即调用onServiceConnected
。在那之前,你不能使用这项服务。检查服务是否为null
,或者在未调用onServiceConnected
时显示进度对话框……因此正确的处理方法是使用广播接收器调用该方法并从OnServiceConnectedi广播我不明白您的意思bindService
请求服务,服务启动并准备好使用后,将立即调用onServiceConnected
。在那之前,你不能使用这项服务。检查服务中是否存在null
或显示进度对话框,只要未调用onServiceConnected
。。。