【问题标题】:Android- Destroy media player service when click on item in ListviewAndroid-单击Listview中的项目时销毁媒体播放器服务
【发布时间】:2011-07-15 16:14:28
【问题描述】:

我目前有一个listview,当您单击一个项目时,它会运行一个servicemediaplayer。如果我单击listview 中的另一个项目,正在运行的service 应该停止并运行新的service。处理这个问题的最佳方法是什么?会使用onDestroy吗?非常感谢。

【问题讨论】:

    标签: android service media-player android-listview ondestroy


    【解决方案1】:

    如果你问我你不应该像这样停止并重新启动服务,但我不知道确切的情况,因为这可能是你的应用程序的必要性。

    您应该在 ListView 的 onItemClick() 中调用 context.stopService(yourServiceIntent),然后在同一 onItemClick() 中使用 putExtra() 使用新输入重新启动服务。

    但我仍然建议您找到此服务停止和重新启动过程的替代方法,因为它可能会通过减少响应时间来影响您的应用程序的性能。

    【讨论】:

    • 所以我尝试了你的建议,现在的问题是如果服务没有运行,那么应用程序将 ANR。有没有办法检测服务是否正在运行,如果是则停止它?
    • @SergioRa 是的,您可以在启动服务时将标志设置为 true,并在停止服务时将其设置为 false,在重新启动服务之前检查标志是否设置为 true,然后不要重新启动它并且如果为假,则调用 startService() 方法。我知道标志对于某些人来说是一个混淆的关键字。这里的标志是指声明一个布尔类型的简单变量,例如 boolean isServiceRunning 并最初将其设置为 false,然后根据您的服务状态更改它的值。
    • 知道了。非常感谢你的帮助。真的很感激
    • 没问题我的朋友。我们都在这里互相帮助。干杯!!
    • 所以我添加了标志,但我不确定我是否做得正确。我提出了另一个问题,所以这里是链接:stackoverflow.com/questions/6725937/…
    猜你喜欢
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    相关资源
    最近更新 更多