【发布时间】:2020-01-18 18:08:02
【问题描述】:
我正在使用以下代码在片段中运行音频文件:
public class AudioFragment extends Fragment implements View.OnClickListener {
private Runnable runnable;
private Handler handler;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view= inflater.inflate(R.layout.fragment_audio,container,false);
btnBwd=view.findViewById(R.id.btnBwd);
btnPlay=view.findViewById(R.id.btnPlay);
seekBar=view.findViewById(R.id.seekBar);
handler=new Handler();
btnBwd.setOnClickListener(this);
btnPlay.setOnClickListener(this);
mediaPlayer = MediaPlayer.create(view.getContext(),R.raw.play);
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener(){
@Override
public void onPrepared(MediaPlayer mediaPlayer){
seekBar.setMax(mediaPlayer.getDuration());
mediaPlayer.start();
changeSeekBar();
}
});
return view;
}
private void changeSeekBar() {
seekBar.setProgress(mediaPlayer.getCurrentPosition());
if(mediaPlayer.isPlaying()){
runnable = new Runnable() {
@Override
public void run() {
changeSeekBar();
}
};
handler.postDelayed(runnable,1000);
}
}
}
这个片段是在另一个活动中创建的,当这个片段被替换为fragmentTransaction.replace()时,由于某种原因,音乐仍然会继续播放。是不是因为涉及到Runnable 对象。我可以向进程发送一些信号吗?
从我的活动或片段本身处理这个问题的好方法是什么?
【问题讨论】:
标签: android android-fragments audio