我必须在应用程序运行完毕后清除一些应用程序数据。据我所知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>
将是一个根活动?这是一般的正确方法吗?
答案 0 :(得分:1)
我认为您需要重新考虑您的设计,因为只有在活动上调用isFinishing
并且没有考虑因内存不足而导致活动被破坏的情况时,它finish
似乎是正确的
这可能是因为活动正在结束(有人称之为finish(),或者因为系统暂时销毁此活动实例以节省空间。您可以使用isFinishing区分这两种情况()方法。
根据您的建议,您可以将应用程序的状态数据存储在static
个变量中,这些变量将在您的申请流程结束时(最后一个活动/服务完成时)清除。
答案 1 :(得分:0)
您在哪里读到onDestroy
可能无法被调用?根据{{3}}
onDestroy
你有没有机会混淆背景而不是被摧毁?
应用程序具有不同的生命周期:整个,可见和前景生命周期。对于那些状态更改,将调用不同的回调,如Android docs所述。
答案 2 :(得分:0)
onDestroy()。因此,如果我们想要检查天气应用程序是否已关闭,那么我们必须实施可以告知我们应用程序状态的通用服务。