Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
声明后在onCreate中访问Android服务_Android - Fatal编程技术网

声明后在onCreate中访问Android服务

声明后在onCreate中访问Android服务,android,Android,当我运行以下代码时,服务值为null。然而,如果我从onCreate之外的东西调用它(比如按钮),它就会工作 在没有用户输入的情况下,我如何从onCreate方法访问它 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); getApplicationContext().bi

当我运行以下代码时,服务值为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;
     }
};
我会说:你不能

这就是
ServiceConnection
的全部要点。它是异步初始化的,您必须处理这个事实。调用服务连接时,您的服务将可用。只要您在等待回调,您的服务变量将是
null

我会说:您不能


这就是
ServiceConnection
的全部要点。它是异步初始化的,您必须处理这个事实。调用服务连接时,您的服务将可用。只要您在等待该回调,您的服务变量将是
null

Hmm。。如何初始化soundService变量?有关更多信息,请参阅更新。。如何初始化soundService变量?有关更多信息,请参阅更新。因此,正确的处理方法是使用广播接收器调用该方法并从OnService连接广播。我不明白您的意思
bindService
请求服务,服务启动并准备好使用后,将立即调用
onServiceConnected
。在那之前,你不能使用这项服务。检查服务是否为
null
,或者在未调用
onServiceConnected
时显示进度对话框……因此正确的处理方法是使用广播接收器调用该方法并从OnServiceConnectedi广播我不明白您的意思
bindService
请求服务,服务启动并准备好使用后,将立即调用
onServiceConnected
。在那之前,你不能使用这项服务。检查服务中是否存在
null
或显示进度对话框,只要未调用
onServiceConnected
。。。