音乐播放器 - 活动生命周期

时间:2016-12-23 17:56:17

标签: android audio-player activity-lifecycle android-music-player

在我的应用中,我真的很难用背景音乐。我只是想在所有活动中播放音乐 - 当我按下主页按钮时我想停止播放音乐。我想在所有活动中“停止或播放”音乐按钮,但无法使其正常工作。

所以我决定做出尴尬的选择 - 只在1个活动中播放

的onCreate

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

的onPause

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

请帮助我轻松完成活动生命周期?因此,当用户按下主页按钮时 - 音乐将停止。当他回到应用程序时 - 音乐将被恢复,此活动也(这不是MainActivity)

谢谢你们,伙计们

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是Activity功能的主要来源,因此在super.onResume();super.onStop();等上述方法中,super指的是AppCompatActivity class < / p>

答案 1 :(得分: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) {

        }
    });
}

}

希望这有帮助