Android活动周期?当活动像Whatsapp一样被销毁时,文本仍然存在?

时间:2015-04-03 05:14:30

标签: android android-activity android-savedstate

我是android新手,最近专注于Activity周期。 我的理解是,如果我们销毁一个活动类,所有未保存的数据都将被清除。

但是whatsapp的聊天页面似乎很有趣,因为在我退出聊天页面并重新进入该特定聊天页面之后,我会看到未保存的文本保留在edittext框中。

那么,他们将如何做这些伎俩?它与“savedInstanceState”有关吗? 提前谢谢!

enter image description here

3 个答案:

答案 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相同的结果。诀窍确实并不困难