【发布时间】:2015-04-02 22:03:21
【问题描述】:
我在 android 中创建了一个媒体播放器,其中 MediaPlayer 位于服务上。 我的主要活动有一个选项菜单,其中包含单个项目“退出”onOptionsItemSelected 调用另一个方法(mp 是服务中的 MediaPlayer 实例)
private void exitPlayer() {
PlayerService.mp.stop();
onDestroy();
}
而onDestroy方法很简单
protected void onDestroy() {
super.onDestroy();
if (!PlayerService.mp.isPlaying()) {
stopService(playerService);
cancelNotification();
finish();
}
}
但它会抛出
java.lang.RuntimeException:无法销毁活动 java.lang.IllegalStateException
谁能帮帮我?谢谢
【问题讨论】:
-
你永远不要直接打电话给
onDestroy(),这很糟糕 -
IllegalStateException通常包含更多信息,可以准确地告诉您发生了什么。你的 logcat 的其余部分在说什么? -
@tyczj mp.stop() 正在停止媒体播放器!为什么不直接调用 onDestroy 呢?如果我从活动中暂停音乐并通过后退按钮退出活动 onDestory() 会毫无例外地被调用,我认为这与硬编码相同
标签: android android-service android-mediaplayer illegalstateexception ondestroy