微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以在Android Activity中的onPause中运行长代码?

如何解决是否可以在Android Activity中的onPause中运行长代码?

“长代码”是指更新sqlite数据库的许多行。我已经实现了这一点。但是一些用户(只有少数)抱怨他们的数据没有更新。显然,仅当用户按下“后退”按钮时,该问题才会出现。也许活动在完成onPause()中的代码之前就死了?这是正常现象吗?

谢谢。

解决方法

直接来自the documentation about the Activity lifecycle

onPause()的执行非常简短,不一定提供足够的时间来执行保存操作。因此,您不应使用onPause()保存应用程序或用户数据,进行网络调用或执行数据库事务。在该方法完成之前,此类工作可能无法完成。相反,您应该在onStop()期间执行重负载关闭操作。有关在onStop()期间执行的适当操作的更多信息,请参见onStop()。有关保存数据的更多信息,请参阅保存和还原活动状态。

基本上:是的,您不应该在onPause中进行任何操作。

,

否,您不应该在onPause()中调用繁重的任务(SQL事务)。
但是,您可以做的就是在数据更改后立即保存。
我建议您将RoomDBKotlin Coroutines一起使用,这样甚至不会阻塞您的用户界面。

,

您的问题尚不清楚。您应该发布代码,每个人都可以为您提供帮助。

我建议使用ViewModelWorkManager执行任何需要完成的任务。不要将任务放在活动/视图上下文中。因为,活动/视图可能随时被破坏,因此您将很难控制。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。