Android 应用程序:如何请求额外的关机时间来完成保存文件?
Android App: How can I request extra time on shutdown to finish saving files?
我 运行 遇到了一个问题,我认为这是由于 Android 在我的应用程序仍在向文件写入数据时终止我的应用程序引起的。
在 iOS 上,我可以执行此操作以强制 OS 等到我完成所有操作后再关闭:
__block UIBackgroundTaskIdentifier aTaskID = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^
{
[[UIApplication sharedApplication] endBackgroundTask:aTaskID];
}
是否有一些等价物让我调用 Android 以便 OS 知道我正在做清理工作,我只需要在它消灭应用程序本身之前完成这些文件的编写?
根据 Activity LifeCycle Documentation,当应用程序被销毁时,将始终调用 onPause() 和 onStop() 方法。但是,执行任何 CPU 密集型任务应始终在 Activity.
的 onStop() 方法中执行
根据您的要求,我建议您在 Activity 的 onStop() 方法中进行清理工作。
如果您认为 Android OS 正在终止您的应用程序,这意味着 OS 正在尝试释放内存资源以供其他应用程序运行,因此,onStop () 方法将被调用,您可以实现您的逻辑以在此方法中保存数据。
我不建议使用 onPause() 方法,因为在其他应用程序之间快速切换、传入 phone 呼叫等情况下,它可能会被过于频繁地调用。
我 运行 遇到了一个问题,我认为这是由于 Android 在我的应用程序仍在向文件写入数据时终止我的应用程序引起的。
在 iOS 上,我可以执行此操作以强制 OS 等到我完成所有操作后再关闭:
__block UIBackgroundTaskIdentifier aTaskID = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^
{
[[UIApplication sharedApplication] endBackgroundTask:aTaskID];
}
是否有一些等价物让我调用 Android 以便 OS 知道我正在做清理工作,我只需要在它消灭应用程序本身之前完成这些文件的编写?
根据 Activity LifeCycle Documentation,当应用程序被销毁时,将始终调用 onPause() 和 onStop() 方法。但是,执行任何 CPU 密集型任务应始终在 Activity.
的 onStop() 方法中执行根据您的要求,我建议您在 Activity 的 onStop() 方法中进行清理工作。
如果您认为 Android OS 正在终止您的应用程序,这意味着 OS 正在尝试释放内存资源以供其他应用程序运行,因此,onStop () 方法将被调用,您可以实现您的逻辑以在此方法中保存数据。
我不建议使用 onPause() 方法,因为在其他应用程序之间快速切换、传入 phone 呼叫等情况下,它可能会被过于频繁地调用。