Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么播放声音的活动会干扰用户界面?_Java_Android_Android Activity_Android Mediaplayer_Android Notifications - Fatal编程技术网

Java 为什么播放声音的活动会干扰用户界面?

Java 为什么播放声音的活动会干扰用户界面?,java,android,android-activity,android-mediaplayer,android-notifications,Java,Android,Android Activity,Android Mediaplayer,Android Notifications,我想显示一个通知,并在用户点击该通知时播放声音。当我使用活动播放声音时,它会以某种方式起作用,正如我在自己对这个问题的回答中所写的那样:(在这个问题和答案中,还有一些源代码显示了我如何创建通知以及我的PlaySoundActivity的外观 然而,我意识到,当声音播放时,我的主应用程序的外观会发生变化,如果不关闭应用程序,它将无法恢复 我已经从“选项卡式活动”项目模板创建了我的应用程序 以下是启动后的情况: 这就是当我点击声音通知时的样子(各部分已消失): 有人能解释为什么会发生这种情况吗?

我想显示一个通知,并在用户点击该通知时播放声音。当我使用活动播放声音时,它会以某种方式起作用,正如我在自己对这个问题的回答中所写的那样:(在这个问题和答案中,还有一些源代码显示了我如何创建通知以及我的
PlaySoundActivity
的外观

然而,我意识到,当声音播放时,我的主应用程序的外观会发生变化,如果不关闭应用程序,它将无法恢复

我已经从“选项卡式活动”项目模板创建了我的应用程序

以下是启动后的情况:

这就是当我点击声音通知时的样子(各部分已消失):


有人能解释为什么会发生这种情况吗?使用活动播放声音是一种错误的方法吗?但当我使用服务时,它在这里不起作用,我什么也听不到!如何解决这个问题?

根据Android开发者参考,“几乎所有活动都与用户交互,因此Activity类负责为您创建一个窗口,您可以在其中使用setContentView(视图)放置UI。”

我没有这样做。因此显示了一个新窗口,但没有内容

播放声音的更好解决方案是使用
PlaySoundService
(service!!!)而不是活动。它包含与活动几乎相同的代码,但挂起的意图是使用
pendingent.getService(…)
而不是
pendingent.getActivity(…)创建的
。使用错误的方法不会产生明显的错误消息,但服务将无法按预期工作