我可以通过检查主Activity的onPause()中的isFinish()来确定Android应用程序是否已完成运行?

时间:2013-03-17 17:04:22

标签: java android android-activity

我必须在应用程序运行完毕后清除一些应用程序数据。据我所知onDestroy()可能无法调用。因此,我决定检查根活动的isFinishing() == true中是否onPause(),以查看此活动和我的应用中的其他活动是否正在完成。但我怀疑这项活动是否存在:

  <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>

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

3 个答案:

答案 0 :(得分:1)

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

From the docs

  

这可能是因为活动正在结束(有人称之为finish(),或者因为系统暂时销毁此活动实例以节省空间。您可以使用isFinishing区分这两种情况()方法。

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

答案 1 :(得分:0)

您在哪里读到onDestroy可能无法被调用?根据{{​​3}}

,在应用程序完成时调用onDestroy

你有没有机会混淆背景而不是被摧毁?

应用程序具有不同的生命周期:整个,可见和前景生命周期。对于那些状态更改,将调用不同的回调,如Android docs所述。

答案 2 :(得分:0)

在销毁活动时调用

onDestroy()。因此,如果我们想要检查天气应用程序是否已关闭,那么我们必须实施可以告知我们应用程序状态的通用服务。