【问题标题】:force close if mediaplayer is not used and back button pushed如果未使用媒体播放器并按下后退按钮,则强制关闭
【发布时间】:2012-03-08 16:26:30
【问题描述】:

在一项活动中,我使用两个媒体播放器播放不同的声音,如果播放两种声音并按下后退按钮没有问题,它可以正常工作。媒体播放器停止并释放。(mp 设置为循环播放,mps 只是播放短声)

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    mp.stop();
    super.onPause();
}
@Override
protected void onStop() {
    // TODO Auto-generated method stub
    mp.release();
    mps.release();
    super.onStop();
}

但是,如果没有播放一个和/或两个声音,我会在按下后退按钮时强制关闭并出现空指针异常。您将如何编写代码来检查媒体播放器是否曾经被使用过,因此需要停止并释放它们?

【问题讨论】:

  • 你能不能使用一个计数,如果有播放,则加一,然后检查它是否等于 0。
  • 我会试试的,谢谢。

标签: android nullpointerexception media-player forceclose


【解决方案1】:

如果你在 onPause 和 onStop 中得到一个空指针,你需要检查 mp 是否为空。

@Override
protected void onPause() {
    if (mp != null)
      mp.stop();
    super.onPause();
}
@Override
protected void onStop() {
   if (mp != null)
    mp.release();
   if (mps != null)
    mps.release();

    super.onStop();
}

如果您愿意,可以保持计数,但这意味着当您已经可以访问所需的变量时,还要跟踪另一个变量

【讨论】:

  • 我让它工作了!!我在播放短声音后直接释放媒体播放器,并在 onPause 处使用 if (mp != null) 停止和释放。谢谢大家的建议。
【解决方案2】:

如果有播放,您能否使用计数并在其上加一,然后检查它是否等于 0。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多