【问题标题】:how to know when activity is destroyed due to orientation change?如何知道活动何时因方向变化而被破坏?
【发布时间】:2017-11-28 15:04:34
【问题描述】:

我正在制作一个活动,当活动因方向变化而被破坏时记录一条消息。 我想做的是在活动被破坏的那一刻调用Log.d()UPON。 换句话说,我不想在重新创建活动后通过检查savedInstanceState==null 来调用它。

有没有办法在我到达onDestroy() 之前知道活动被破坏的原因?谢谢

【问题讨论】:

    标签: android android-activity rotation orientation


    【解决方案1】:

    您可以使用文档中的isChangingConfigurations()

    检查此活动是否正在被销毁以便使用新配置重新创建。

    提供文档here

    【讨论】:

    • 不错!不知道这个。
    • 如果它适合您的需要,请告诉我,如果适合,您介意接受答案吗?
    • 我没有问这个问题;)
    【解决方案2】:

    如果我理解正确,您想在销毁活动之前记录一些内容。 根据 lyfecyle 活动图,此时您应该这样做。

    在您的活动中,您可能必须在超级调用之前覆盖 onDestroy 方法和调用日志。

    @Override
    public void onDestroy() {
        //log
        Log.d()
        super.onDestroy();
    }
    

    编辑: 胡安是对的,正如文档所述: “在某些情况下,系统会简单地终止 Activity 的宿主进程,而不会在其中调用此方法(或任何其他方法),因此不应使用它来执行打算在进程消失后保留的事情。 "

    https://developer.android.com/reference/android/app/Activity.html#onDestroy%28%29

    【讨论】:

    • 您需要阅读与活动生命周期回调相关的文档。首先,您指向转换而不是状态。其次,不保证 onStop() 之外的任何东西都能运行。如果您正在运行旧的 Android API,这也将扩展到 onStop()。
    • 谢谢胡安!在看到您的答案之后,在我的答案中您的 cmets 之前,我已经查看了文档,您是对的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多