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

Ole*_*rov 5 java android android-activity

在我的应用程序运行完毕后,我必须清除一些应用程序数据.据我所知,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>
Run Code Online (Sandbox Code Playgroud)

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

Emi*_*yan 1

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

来自文档

发生这种情况的原因可能是活动即将完成(有人对其调用 finish(),也可能是因为系统暂时销毁活动的此实例以节省空间。您可以使用 isFinishing() 方法区分这两种情况。

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