我已经完成了这部分的研发,但无法找到这个问题的答案
如果后台Activity是由android系统GC,如何保存当前状态 在GC真的发生之前?
此致 Inder bagga
答案 0 :(得分:2)
由于Java GC在运行之前或之后没有提供任何回调机制或任何挂钩,因此无法在GC之前执行某些活动。
虽然可以说是出于监控目的,但您可以尝试在修复时间间隔内捕获当前状态,以确定您可能想要验证应用程序GC发生方式的时间间隔:
jstat -gcutil -t -h5 <pid> 500 5
这会给你输出类似的东西:
Timestamp S0 S1 E O P YGC YGCT FGC FGCT GCT
3995.4 0.00 0.00 5.15 0.26 56.95 6 0.019 2 0.057 0.076
4000.4 0.00 0.00 5.15 0.26 56.95 6 0.019 2 0.057 0.076
其中YGCT是以毫秒为单位的次要循环时间,这将大致了解您的应用程序GC stat表示每隔19秒发生一次小循环,根据此情况,您可能需要调整以保存当前状态
答案 1 :(得分:2)
如果您的应用中的任何内容被垃圾收集,它将已经通过onStop()
和onDestroy()
方法。在GCd
如果您想存储状态,最好在其中一个状态下执行 - 尽管绝对最安全的地方是onPause()
,因为onStop()
和onDestroy()
都是可以使用的进程,意味着方法可能无法完全执行 - 请参阅Activity lifecycles