2013-02-13 16 views
8

Tworzę aplikację do gier z muzyką w tle. Korzystałem z usługi Android, aby odtwarzać muzykę w tle, ponieważ chciałem uruchomić BGM podczas zmiany aktywności. Mój problem polega na tym, że zadeklarowałem metodę finish() w metodzie onPause w każdym działaniu (nie chcę, aby użytkownik zwrócił & chce zabić działanie).Zatrzymaj usługę Android po zamknięciu aplikacji

, więc gdy zamierzam wykonać inną czynność, zadzwonię doDestroy i zatrzymam usługę. Chcę zatrzymać usługę dokładnie wyjść z aplikacji (naciskając przycisk home) i chcesz przejrzeć działania z BGM i zakończyć() w onPause(). Jest to możliwe? czy istnieje inne rozwiązanie?

public class BackgroundMusicService extends Service { 
    private static final String TAG = null; 
    MediaPlayer player; 

    public IBinder onBind(Intent arg0) { 

     return null; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     player = MediaPlayer.create(this, R.raw.topbgm); 
     player.setLooping(true); // Set looping 
     player.setVolume(100, 100); 
    } 

    public int onStartCommand(Intent intent, int flags, int startId) { 
     player.start(); 
     return 1; 
    } 

    public void onStart(Intent intent, int startId) { 
     // TO DO 

    } 

    public IBinder onUnBind(Intent arg0) { 
     // TO DO Auto-generated method 
     return null; 
    } 

    public void onStop() { 

    } 

    public void onPause() { 

    } 

    @Override 
    public void onDestroy() { 
     player.stop(); 
     player.release(); 
     Log.i("service", "service killed"); 
    } 

    @Override 
    public void onLowMemory() { 

    } 
} 

w jawnym

<service android:name=".BackgroundMusicService" android:process=":remote" /> 

Odpowiedz

15

umieścić tę linię aktywności yout

stopService(new Intent(this, BackgroundMusicService.class)); 

w onDestroy() metoda, gdzie naciskając przycisk home.

+0

dzięki za reply.I zrobił this.if czytasz moje pytanie ostrożnie, problem jest wtedy, gdy zmiany czynności, wykończenie() wywołuje metodę onDestroy i zatrzymuje usługę .masz jakiś pomysł? – Hassy31

2

stopService(new Intent(this, BackgroundMusicService.class));

dodać do swojej metody onPause() i onDestroy() metody w swojej głównej działalności. Ponieważ jeśli naciśniesz przycisk Home, aplikacja będzie znajdować się w tle dla czasu losowego, a metoda onDestroy() nie zostanie wywołana zaraz po zminimalizowaniu aplikacji. Najlepszym sposobem na to jest wprowadzenie go do metody onPause(). Metoda onPause() jest wywoływana, gdy działanie aplikacji nie jest działaniem w tle.

+0

dziękuję za odpowiedź. Próbowałem tego. Coś jest Chcę uruchomić usługę podczas wykonywania działań.Ale mam zakończyć() w onPause i to wywołuje metodę OnDestroy – Hassy31

0

zastąpić metodę onUnbind (Intent Intenet) w służbie

Powiązane problemy