我是android新手,最近专注于Activity周期。 我的理解是,如果我们销毁一个活动类,所有未保存的数据都将被清除。
但是whatsapp的聊天页面似乎很有趣,因为在我退出聊天页面并重新进入该特定聊天页面之后,我会看到未保存的文本保留在edittext框中。
那么,他们将如何做这些伎俩?它与“savedInstanceState”有关吗? 提前谢谢!
答案 0 :(得分:1)
我的理解是,如果我们销毁一个活动类,将清除所有未保存的数据。
是的,除非当然重要数据保存在onPause()
方法的某些持久存储中,并在onResume()
方法中检索。这是在Activity被使用或操作系统杀死并稍后重新启动时持久保存数据的常用方法。
但是whatsapp的聊天页面似乎很有趣,因为在我退出聊天页面并重新进入该特定聊天页面后,我会看到未保存的文本保留在edittext框中。
当您单击后退按钮并再次转到聊天页面时就是这种情况。我确认,当您杀死应用程序本身时,情况并非如此。因此,一个好的猜测是活动永远不会被杀死,数据会通过savedInstanceState
保留。
答案 1 :(得分:0)
在正常情况下,当您点击设备的Back
按钮时,系统会调用生命周期方法onPause
。也许WhatsApp将EditText
中的文本存储到SharedPreference
中。当您再次转到此Activity
时,此EditText
的文字将被设置为存储在SharedPreference
中的文字。当然,在WhatsApp
的情况下,只有它的开发者知道。
答案 2 :(得分:0)
参考Ikshvaku的Scion的评论 我创建了一个sqlite表来在edittext中存储未发送的msg。 它将获得与whatsapp相同的结果。诀窍确实并不困难