在销毁应用程序时执行自定义代码

时间:2012-09-20 18:21:07

标签: android android-activity android-service

我有一个磁盘缓存,我需要在应用关闭时关闭它。哪个地方最好?

- 覆盖活动onDestroy方法并检查它是否是任务根目录:

    @Override
    protected void onDestroy () {
        if (this.isTaskRoot()) {
            //I only want to close it if this is the last activity of the app
            CloseCache();
        }
        super.onDestroy();
    }

根据文档,当系统刚杀死应用程序时,可能无法调用Activity.onDestroy(),因此在这种情况下,这将使缓存保持打开状态。

- 使用在同一进程中运行的服务并从其onDestroy回调关闭缓存? Service.onDestroy()是否在系统被破坏时始终被调用?

- 其他一些我不知道的方式?

1 个答案:

答案 0 :(得分:1)

您可以考虑在onStop()方法中执行此步骤,该方法是“当您不再对用户可见时调用。您将接下来接收onRestart(),onDestroy()或什么都不会,具体取决于以后的用户活动“。然后在onRestart()方法中,如果需要,可以回收缓存。

http://developer.android.com/reference/android/app/Activity.html#onStop%28%29