2016-12-23 3 views
0

У меня действительно тяжелое время с фоновой музыкой в ​​моем приложении. Я просто хочу играть музыку во всех действиях - когда я нажимаю кнопку «домой», я хочу остановить музыку. Я хочу, чтобы кнопка «останавливалась или играла» во всех действиях, но не могла заставить ее работать.Музыкальный проигрыватель - жизненный цикл деятельности

Так что я решил сделать смущают выбор - играть только в 1 activitiy по

OnCreate

backgroundmusic = MediaPlayer.create(StoryActivity.this, R.raw.creepy_music); 
    backgroundmusic.start(); 

OnPause

@Override 
    protected void onPause() { 
    super.onPause(); 
    backgroundmusic.release(); 
    finish(); 
} 

Можете ли вы помочь мне с легким жизненным циклом деятельности? Поэтому, когда пользователь нажимает кнопку «домой», музыка останавливается. Когда он вернется в приложение - музыка будет восстановлена ​​и эта деятельность тоже (не MainActivity)

Спасибо, ребята

+2

Возможного дубликату [простейшим Android активности Lifecycle] (http://stackoverflow.com/questions/5538312/simplest-android-activity-lifecycle) –

+0

Вы можете воспроизводить музыку с службы и управлением потоком от деятельности , Вот хороший урок об этом: http://sapandiwakar.in/building-a-music-player-app-for-android-2/ –

+0

В этом случае музыка не будет прикрепляться только к одному действию, и вы можете управлять в любом месте –

ответ

0

<code>enter image description here</code>

Вот различные состояния Lifecycle. Теперь ваш ответ,

@Override 
    protected void onStop() { 
     super.onStop(); 
     backgroundmusic.pause(); 
     length = backgroundmusic.getCurrentPosition(); 
    } 

@Override 
    protected void onResume() { 
     super.onResume(); 
     backgroundmusic.seekTo(length); 
     backgroundmusic.start(); 
    } 

В public class MainActivity extends AppCompatActivity, Это AppCompatActivity, что является основным источником функциональности это деятельность, а значит, в приведенных выше методов, таких как super.onResume(); и super.onStop(); супер относится к AppCompatActivity class

0

предположить, что вы можете получить музыкальный сервис в заявке, вы можете искать для этого:

public class MyApp extends Application{ 

MusicService musicService; 

@Override 
public void onCreate() { 
    super.onCreate(); 

    registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { 
     @Override 
     public void onActivityCreated(Activity activity, Bundle savedInstanceState) { 

     } 

     @Override 
     public void onActivityStarted(Activity activity) { 

     } 

     @Override 
     public void onActivityResumed(Activity activity) { 
      if(musicService==null) return; 
      if(!musicService.isPlaying()){ 
       musicService.play(); 
      } 
     } 

     @Override 
     public void onActivityPaused(Activity activity) { 
      if(musicService==null) return; 
      if(musicService.isPlaying()){ 
       musicService.pause(); 
      } 
     } 

     @Override 
     public void onActivityStopped(Activity activity) { 

     } 

     @Override 
     public void onActivitySaveInstanceState(Activity activity, Bundle outState) { 

     } 

     @Override 
     public void onActivityDestroyed(Activity activity) { 

     } 
    }); 
} 

}

Надеется, что это помогает

Смежные вопросы