Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.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
Android 如何绑定到由应用程序的另一个实例启动的服务_Android_Android Service_Background Process - Fatal编程技术网

Android 如何绑定到由应用程序的另一个实例启动的服务

Android 如何绑定到由应用程序的另一个实例启动的服务,android,android-service,background-process,Android,Android Service,Background Process,我有一个后台服务,即使应用程序被安卓系统杀死,它也需要运行。这是目前工作的完美 我的问题是,当我重新启动应用程序(后台服务仍在运行)时,我希望我的活动绑定到该服务以访问其某些方法。当我尝试使用ServiceConnection绑定时,从未调用onServiceConnected final private ServiceConnection serviceConnection = new ServiceConnection() { public void onServiceConnec

我有一个后台
服务
,即使应用程序被安卓系统杀死,它也需要运行。这是目前工作的完美

我的问题是,当我重新启动应用程序(后台服务仍在运行)时,我希望我的
活动
绑定到该服务以访问其某些方法。当我尝试使用
ServiceConnection
绑定时,从未调用
onServiceConnected

final private ServiceConnection serviceConnection = new ServiceConnection() {

    public void onServiceConnected(ComponentName className, IBinder service) {
        Log.d(TAG, "onServiceConnected");  //this is never called
        MyBackgroundService.ServiceBinder binder = (MyBackgroundService.ServiceBinder) service;
        backgroundService = binder.getService();
    }

    public void onServiceDisconnected(ComponentName className) {
        Log.d(TAG, "onServiceDisconnected");
        backgroundService = null;
    }

};

private void bindBackgroundService(){
    this.bindService(new Intent(this, MyBackgroundService.class), serviceConnection, Context.BIND_AUTO_CREATE);
}

我这样做不对吗?停止
服务
并重新启动它是否更好?

因为绑定后台服务的类是单例,而确保后台服务始终运行的我的报警广播接收器会实例化此单例,我有权访问此单例,我正试图绑定到已绑定的服务。

活动
被销毁之前,您是否解除了
服务
的绑定?“我有一个后台服务,即使应用程序被安卓杀死也需要运行”——如果安卓终止承载该服务的进程,服务取消了。该服务可能会在某个时候重新启动,具体取决于您从
onStartCommand()
@Emmanuel()返回的内容,我尝试过,但onDestroy不常被称为…@commonware,我使用START\u STICKY,因此它在与我的活动失去绑定后仍然可以运行。但是我发现KitKat有一个bug,它阻止START_STICKY像它应该做的那样工作,所以我有一个报警广播接收器,当它检测到它被杀死时会重新启动它