Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.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
Android:对应用程序状态感到困惑_Android_Instance_State - Fatal编程技术网

Android:对应用程序状态感到困惑

Android:对应用程序状态感到困惑,android,instance,state,Android,Instance,State,我在这里看过这篇文章(http://stackoverflow.com/questions/151777/how-do-i-save-an-android-applications-state). 我相信我也有类似的问题 我有一个听音频流的应用程序(使用mediaPlayer对象)。如果我按下Home(主页)按钮,它将继续播放流媒体并隐藏我的应用程序。然后,在以后的某个时候,我可以返回到我的应用程序,并在完成后按stop。这就是我想要的。但是,如果我按下后退按钮,当我稍后再次打开我的应用程序时,

我在这里看过这篇文章(http://stackoverflow.com/questions/151777/how-do-i-save-an-android-applications-state). 我相信我也有类似的问题

我有一个听音频流的应用程序(使用mediaPlayer对象)。如果我按下Home(主页)按钮,它将继续播放流媒体并隐藏我的应用程序。然后,在以后的某个时候,我可以返回到我的应用程序,并在完成后按stop。这就是我想要的。但是,如果我按下后退按钮,当我稍后再次打开我的应用程序时,该应用程序已从“新鲜”重新绘制。文本框,按钮,一切都重置了,就像我第一次打开应用一样,所以我无法停止我的音频流。单击“停止”没有任何作用,因为应用程序“忘记”了它正在流(流在与主UI线程不同的处理程序下运行,所以我猜,自从它被“重置”后,它就失去了对处理程序的跟踪?)


为什么“后退”按钮会出现这种情况?我如何停止它?

将流媒体功能移动到Android服务中。使用活动绑定到服务并与之交互。

这仍然给我留下了一个问题,不一定要这样做,但我认为这是一个很好的观点:我有一个标记为“开始”的按钮。当您单击它时,如果它的文本是“开始”,它将启动流在其中运行的处理程序,并将按钮文本更改为“停止”。当您单击且文本为“停止”时,它会停止流并将文本更改回“开始”。如果我按下按钮并启动流(并且按钮文本更改为“停止”),则我会按下后退,如上所述,继续收听流,然后返回我的应用程序停止流,界面被重新绘制,按钮上写着“开始”,所以我不能停止它?单击“开始”启动另一个流,因此现在有两个流正在运行,但时间稍有不足,然后按“停止”停止新的流实例,旧的流实例仍在运行。如果我使用的服务只有这样一个按钮,当我返回应用程序时,它仍然会启动“启动”而不是“停止”,对吗?是的,这是正确的。您必须保存活动的状态。或者,如果您使用服务,请询问该服务是否有正在运行的流。按下后退并重新启动活动将导致调用onCreate。因此,请使用类似saveInstanceState.getBoolean(“HAS_RUNNING_STREAM”)的东西Philipp Schwarte,很抱歉我的回复太晚了,我还没有进行任何更改来实现它。使用服务正是我最终需要的,非常感谢!:D