【发布时间】:2013-09-28 15:19:30
【问题描述】:
如果在执行方法时发生了一些活动生命周期事件会怎样?
例如,我的活动有一些将 JSON 文本文件(几十 Kb)写入磁盘的方法。是不是设计错了?
或者,一般来说,考虑有两条指令要执行的情况:第一条执行重要操作,第二条根据第一条的结果更新一些数据。
类似:
value=performOperationAndYeldResult();
updateAppData(value);
如果生命周期事件发生在第一次调用之后和第二次调用之前,或者在它执行时会发生什么?
我在服务中放置了“长”操作,但我无法为整个应用程序中的每个关键数据更新创建服务。我想我错过了什么,所以我什么都不怕。也许恢复或重新启动的活动会继续操作,以便完成。
无论如何我在这里问:方法是完成还是继续?
【问题讨论】:
-
强烈建议将长时间运行的操作放在 Service 中。为什么不能使用服务?
-
操作是在UI线程中进行的吗?如果是,我建议在辅助线程中执行它们。在辅助线程中发生是安全的,即使活动被破坏,线程也会继续运行。
-
或者根据@NitinSethi 的回复,使用服务或更好的异步任务。对于写作操作,我建议实现一个 AsyncTask。阅读有关如何使用它的信息。 developer.android.com/reference/android/os/AsyncTask.html
-
AsyncTask 不适合运行长任务。根据 API 文档,建议仅用于运行“几”秒的短操作。
-
"few几十kb" 我猜不会花很长时间......他已经说过长时间操作正在发生在一个服务中,但是你不能为任何 10 的操作创建一个服务秒时间
标签: android file methods android-activity activity-lifecycle