Сервисы Android Studio onServiceConnected () никогда не вызывались, пока onBind () - PullRequest
0 голосов
/ 02 декабря 2018

В моем приложении я использую связанные сервисы.Однако во время выполнения кода я запускаю сервис и связываюсь с ним (метод OnBind () работает), но впоследствии OnStartService () никогда не вызывается, и мой сервис равен нулю.

Вот мой сервисный код:

public class MyService extends Service{

boolean toExit = false;
boolean isThreatDetectionOn;

boolean isDanger = false;
int counter;

class MyServiceBinder extends Binder {
    public MyService getService()
    {
        return MyService.this;
    }
}



@Nullable
@Override
public IBinder onBind(Intent intent) {
    Log.i("Bind", "thats good");
    return null;
}

@Override
public void onDestroy() {
    stop();

    super.onDestroy();

}


@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    isThreatDetectionOn = true;




    new Thread(new Runnable() {
        @Override
        public void run() {
            start();
        }
    }).start();
    return START_STICKY;
}
}

start () и stop () - это метод, который запускается в сервисе и начинает генерировать случайные числа и прекращает генерировать случайные числа соответственно.

Вот код привязки / отмены привязки для службы:

private MyService ListeningService;
private boolean isServiceBound = false;
private ServiceConnection serviceConnection;


bindService = (Button) findViewById(R.id.button7);
    bindService.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view)
        {
            Log.i("Great","Button Bind Clicked");
            if(serviceConnection == null)
            {
                Log.i("Great","Service Connection is Null");
                serviceConnection = new ServiceConnection() {
                    @Override
                    public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
                        MyService.MyServiceBinder myBinder = (MyService.MyServiceBinder)iBinder;
                        listeningService = myBinder.getService();
                        isServiceBound = true;
                        Log.i("Yes", "Service Connected");
                    }

                    @Override
                    public void onServiceDisconnected(ComponentName componentName) {
                        isServiceBound = false;
                        Log.i("No", "Service DisConnected");
                    }
                };
            }

            bindService(serviceIntent, serviceConnection, Context.BIND_AUTO_CREATE);
        }
        });

    unbindService = (Button) findViewById(R.id.button8);
    unbindService.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (isServiceBound)
            {
                unbindService(serviceConnection);
                isServiceBound = false;
                Log.i("No", "Service DisConnected");
            }
        }
    });

Даже после вызова onBind () (в журналах говорится «Bind: thats good») isServiceBound по-прежнему остается ложнымкогда это должно теперь стать правдой, потому что сервис теперь подключен.

...