【问题标题】:Instance States and media player实例状态和媒体播放器
【发布时间】:2013-04-18 17:29:39
【问题描述】:

我正在编写一个简单的应用程序,其中活动 A 播放了一首歌曲。按下按钮时,媒体播放器暂停,活动 B 打开。当用户回到活动 A 时,媒体播放器应该恢复(从它停止的地方)。我的问题是,当您在活动 B 上按下后退按钮时会发生什么?我知道活动 B 将被杀死,但活动 A 的 onResume 是否已加载?我在哪里给出恢复指令?

【问题讨论】:

  • yes onResume() 在活动 A 中将被调用。同样在活动 A 中onStart()

标签: android android-mediaplayer state instance media


【解决方案1】:
onResume  method will be called when a activity is resumed. 

看来你必须先阅读Activity Lifecycle,才能进行任何类型的安卓编程

【讨论】:

  • 我有 mediaplayer.start();在我的 onResume 函数中,当我从活动 b 中点击后退按钮时没有任何反应。这是为什么呢?
【解决方案2】:

我的代码如下所示

public class Homework extends Activity {

final MediaPlayer mediaplayer = new MediaPlayer();
int media_length;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_homework);

    setContentView(R.layout.activity_homework);
    AssetFileDescriptor afd;
    try {
        afd = getAssets().openFd("rev.mp3");
        mediaplayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
        mediaplayer.prepare();
    } catch (IOException e) {
        e.printStackTrace();
    }
    mediaplayer.start();
    Button next = (Button) findViewById(R.id.homeworkContinue);
    final Intent openCloser = new Intent(this, EndActivity.class);
    next.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {
            mediaplayer.pause();
            media_length = mediaplayer.getCurrentPosition();
            startActivity(openCloser);

        }

    });
}

public void onResume(Bundle savedInstanceState){
    super.onResume();
    mediaplayer.seekTo(media_length);
    mediaplayer.start();
}

}

【讨论】:

  • 您面临的问题是什么?
  • 基本上,当我从活动 b 中点击后退按钮时,它会重新加载到此活动中并且不播放任何内容。
猜你喜欢
  • 2020-06-05
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多