android 保留进程,如何确保在android杀死进程之前保存数据

在Android中,在UI-Thread中执行无数据库操作(或至少是复杂的操作)通常是一种很好的做法.我有一个复杂形式的活动,我想确保当活动在后台进行时保存所有数据(例如,用户按下主页按钮或打来电话).在activity的onPause() – 方法中,我可以启动一个AsyncTask,它将数据存储在数据库中,但我永远无法确定任务是否成功完成,因为android可以在任务完成之前终止进程,因为活动和整个应用程序都在后台.

我可以在onPause方法中保存数据同步,但之后可以运行到ANR.

我知道Android会在活动被杀死后恢复视图,但只有在View Ids是唯一的时才能正常工作.我有很多以编程方式添加的视图,我无法确保Id的唯一性,并且使用saveInstanceState功能几乎是不可能的,因为我必须保存非常复杂的模型.

是否有可能确保在Android杀死进程之前保存数据而不在UI-Thread中执行此操作?

解决方法:

我创建了一个应用程序,我有类似的数据一致性问题.我在那里做的是委托将数据对象存储到我为此目的创建的服务.虽然这会使您的Activity的启动/停止/初始化变得更加困难(一旦活动再次启动,您将不得不等待服务完成其先前启动的保存操作),这是我唯一的“Android”方式想到要解决这个问题.

标签:android,android-sqlite,android-asynctask

来源: https://codeday.me/bug/20190629/1327413.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值