【问题标题】:Android: How to know if an activity is finished?Android:如何知道活动是否完成?
【发布时间】:2011-09-12 21:56:29
【问题描述】:

我正在开发一个应用程序,它可以在给定的活动中自动并连续播放 mp3 文件。它通过侦听来自 MediaPlayer 的“onCompletion”事件来知道当前 mp3 播放何时完成。

但是,如果我在播放媒体时按后退按钮返回到开始显示,显然活动仍在运行。当触发“onCompletion”事件时,它会尝试访问列表活动中的视图并在空指针异常时崩溃。

确定活动不再“活动”并因此能够阻止呼叫播放下一个音频的最佳方法是什么?

【问题讨论】:

    标签: android activity-finish


    【解决方案1】:

    尝试在 Activity 生命周期方法 onStop 或 onDestroy 中触发它们。详情请查看this documentation

    onStop 将在用户单击后退按钮时触发。所以在 onStop 中处理你的事件。

    @Override
    public void onStop () {
        // Do your stuff here
        super.onStop() 
    }
    

    最终,onDestroy 也会被调用,但不一定在单击后退按钮时立即调用。

    【讨论】:

    • 谢谢。我只是在 onStop 方法中设置了一个标志,然后在侦听器中检查它。它就像一个魅力。
    • onStop() 也会在一些新活动出现在该活动之前时触发。如果您想收听返回按钮,请尝试 onBackPressed() 事件。
    • onStop 也会在配置更改时调用
    • 你真的应该添加 @Override ,良好的编码风格
    【解决方案2】:

    如果您使用的是 Kotlin,请使用此

    override fun onStop () {
        super.onStop()
        //do stuff
    }
    

    Here 更多主题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-08
      • 2020-02-06
      • 1970-01-01
      相关资源
      最近更新 更多