5

我的应用程序运行完毕后,我必须清除一些应用程序数据。据我所知,onDestroy()可能不会被调用。所以我决定检查根活动是否进入,看看这个活动和我的应用程序的其他活动是否正在完成isFinishing() == trueonPause()但我怀疑这项活动是否:

  <activity
        android:name="com.test.AuthorizationActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

将是一个根活动?一般来说,这是正确的方法吗?

4

3 回答 3

1

我认为您需要重新考虑您的设计,因为似乎isFinishing只有在finish活动上被调用时才是正确的,并且不考虑活动因内存不足而被破坏的情况。

从文档

这可能是因为 Activity 正在完成(有人在其上调用了 finish(),或者因为系统正在临时销毁该 Activity 实例以节省空间。您可以使用 isFinishing() 方法区分这两种情况。

对于您的建议,您可以将应用程序的状态数据存储在static变量中,当您的应用程序进程结束时(当最后一个活动/服务完成时),这些变量将被清除。

于 2013-03-17T22:13:13.777 回答
0

你在哪里读到onDestroy可能不叫的?onDestroy根据Android 文档,在应用程序完成时调用。

您是否有可能将进入背景与被摧毁混为一谈?

应用程序有不同的生命周期:整个生命周期、可见生命周期和前台生命周期。为这些状态更改调用不同的回调,如此所述。

于 2013-03-17T21:53:16.067 回答
0

onDestroy() 在活动被销毁时被调用。因此,如果我们想检查天气应用程序是否关闭,那么我们必须实现可以通知我们应用程序状态的通用服务。

于 2016-03-30T06:23:03.357 回答