我有自己的自定义适配器类,称为 WordAdapter,我正在使用媒体播放器(pronounce在 WordAdapter 类中命名为-global 变量)。我有不同的活动,其中每个列表项都有一个线性布局(命名为linearLayout)。我正在设置onClickListener它,以便在单击线性布局时播放声音文件。播放完那个声音后,我想释放任何不需要的记忆。但我不知道我是否应该使用release()或reset()。我之前已经检查过之前在SO上提出的问题,但我认为它没有为我的情况提供准确的解释以使用哪种方法。
注意:在此之后我也应该能够播放其他音频文件(完成播放此音频文件后,当我在同一活动中单击其他项目时,我应该能够听到声音。)
linearLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
pronounce = MediaPlayer.create(context, currentWord.getPronounceResourceID());
pronounce.start();
pronounce.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer player) {
//pronounce.release();
//pronounce.reset();
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
在 areset之前做 a release,但我怀疑只需release要这样做。
这可能更容易管理:
public void onClick(View view) {
if (pronounce != null) {
pronounce.reset();
pronounce.release();
pronounce = null;
}
pronounce = MediaPlayer.create(context, currentWord.getPronounceResourceID());
pronounce.start();
}
Run Code Online (Sandbox Code Playgroud)
该reset方法将简单地停止任何媒体并将 MediaPlayer 实例发送回空闲状态。与创建时的状态完全相同。
该release方法会破坏媒体播放器并释放大部分非托管资源。当您调用 时release,您应该将实例变量设置为 null,以便对象的其余部分成为垃圾回收的候选对象。
如果您只使用重置,然后在后续点击时重用现有的媒体播放器实例,您可能会获得更好的性能。
| 归档时间: |
|
| 查看次数: |
6198 次 |
| 最近记录: |