onPause方法中长时间运行任务的最佳实践

时间:2014-10-03 06:44:40

标签: android

Android 0.8.11

您好,

我有一个使用sqlite3数据库的应用程序,它将保存可能会增长的几百条记录的内容。

使用启动画面加载记录。但是,当用户使用后退按钮关闭应用程序时,项目将被保存。但是,这可能需要很长时间。

运行长时间运行任务会产生什么影响。 android可以杀死它并破坏数据库吗?

是否可以在onPause期间创建一个线程,或者这是不好的做法?

感谢您的任何建议,

2 个答案:

答案 0 :(得分:1)

最好的方法是启动IntentService,这将为您完成繁重的工作。对于在ui线程上执行onResumeonPause方法,它们必须尽可能快地执行,否则可能导致屏幕冻结和ANR错误。所以你唯一应该做的就是用onPause方法启动服务并让它完成它的工作:)

答案 1 :(得分:1)

onPause调用中启动一个线程是一个糟糕的实践,你可能会丢失一些数据: 在javadoc中,您可以阅读(强调我的):

  

在系统需要更多内存的情况下,它可能会终止暂停的进程以回收资源。因此,您应该确保在您从此功能返回时保存所有状态

如果你在onPause中启动一个线程以使其更快地返回,则该线程可能会在保存数据时被终止。

您应该在活动期间以增量方式保存记录,以避免在用户离开应用程序时一步完成所有记录的保存。您也可以将任务卸载到后台服务,但是您必须小心不要丢失任何数据,因为服务可能也会被杀死。