ferrazrafael
ferrazrafael

Reputation: 83

How to unbind a Service when the Activity Stops?

I'm trying to make a music player. To do that I'm creating a service that manages a MediaPlayer object and plays the songs. But every time I reopen my music application it starts a new Service and keeps playing two songs simultaneously. How can I make my Activity bind to the already running service?

I noticed that when I don't call unbindService (...) in the OnStop() method my application runs OK. But I don't know if its right to not unbind when the activity stops.

I'm binding like that:

@Override
protected void onStart() {
    super.onStart();

    Intent service = new Intent(this,MyService.class);

    bindService(service, mConnection, Context.BIND_AUTO_CREATE);
}

@Override
protected void onStop() {
    super.onStop();

    if(mBound) {
        unbindService(mConnection);

        mBound = false;
    }
}

Upvotes: 0

Views: 1063

Answers (2)

ferrazrafael
ferrazrafael

Reputation: 83

I could fix it add startService(...) to the OnStart( ) method. I didnt understand why this fixed, but seems that I need to do that. If anyone knows why please add. Thanks for everyone help.

this is how OnStart got:

@Override
protected void onStart() {
    super.onStart();

    Intent service = new Intent(this,MyService.class);

    bindService(service, mConnection, Context.BIND_AUTO_CREATE);

    startService(service);
}

Upvotes: 0

Shahinoor Shahin
Shahinoor Shahin

Reputation: 685

You need to check on onStart() that is service running or not. If service is already running, then you need to just bind it. But in your current code you creating service everytime.

You should try to use Service.START_STICKY for checking that service is already running or not. You can see : Service , start Sticky or start not sticky

I think it will help you to update your service class.

Upvotes: 1

Related Questions