Mam 2 rodzajów działalności, & B. Usługa rozpoczyna się w B z takim kodem:Jak zatrzymać usługę z innej aktywności w systemie Android?
startService(new Intent(this, PlayerService.class));
Intent connectionIntent = new Intent(this, PlayerService.class);
bindService(connectionIntent, mp3PlayerServiceConnection, Context.BIND_AUTO_CREATE);
private ServiceConnection mp3PlayerServiceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName arg0, IBinder binder) {
mp3Service = ((LocalBinder) binder).getService();
Thread t = new Thread() {
public void run() {
mp3Service.playSong(getApplicationContext(),url);
}
};
t.start();
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
}
};
muszę mieć możliwość, aby zamknąć usługę, kiedy jestem na aktywność A (B jest zamknięty, ale muzyka gra). Jak wywołać StopService z A onDestroy()? Czy muszę go rozwiązać, jeśli tak, jak i gdzie?
Po prostu umieszczenie stopService(new Intent(this,PlayerService.class));
prowadzi do błędu: Aktywność B spowodowała wyciek połączenia usługi ... które pierwotnie było tutaj ograniczone. (Ale B jest już zamknięty)
Dzięki, spróbuj – Tramway11
StartService w onCreate, bind on onStart i unbind w onStop. –
Wydaje się działać, jeśli tylko kilka przebiegów B i powrót do A nie może powodować pewnych problemów (np. Połączenie nie zostało przerwane w czasie, niektóre współbieżne problemy). – Tramway11