Android Activity 循环?当 Activity 像 Whatsapp 一样被销毁时,文本仍然存在?
Android Activity Cycle? Text Remains When Activity is destroyed like Whatsapp?
我是 Android 的新手,最近专注于 Activity 周期。
我的理解是,如果我们销毁一个activity class,所有未保存的数据都会被清除。
但是whatsapp的聊天页面似乎很有趣,因为在我退出聊天页面并重新进入该特定聊天页面后,我会看到未保存的文本保留在编辑文本框中。
那么,他们会怎么做呢?与"savedInstanceState"有关吗?
My understanding is that if we destroy an activity class, all the unsaved data will be cleared.
是的,当然,除非重要数据在 onPause()
方法中保存在某些持久存储中并在 onResume()
方法中检索。当 Activity 被 used 或 OS 杀死并稍后重新启动时,这是持久化数据的常用方法。
But whatsapp's chat page seems to be quite interesting as after i quit the chat page and re-enter that particular chat page, i would see the unsaved text remain in the edittext box.
当您点击返回按钮并再次进入聊天页面时就是这种情况。我确认当您终止应用程序本身时情况并非如此。所以一个很好的猜测是 activity 永远不会被杀死并且数据通过 savedInstanceState
.
持久化
正常情况下,当您点击设备的Back
按钮时,会调用生命周期方法onPause
。也许 WhatsApp 将 EditText
中的文本存储到 SharedPreference
中。当您再次转到此 Activity
时,此 EditText
的文本将被设置为存储到 SharedPreference
中的文本。当然,在这种情况下 WhatsApp
,只有它的开发人员知道。
参考Ikshvaku后裔的评论
我创建了一个 sqlite table 来将未发送的消息存储在 edittext 中。
它会达到与 whatsapp 相同的结果。技巧确实不难
我是 Android 的新手,最近专注于 Activity 周期。 我的理解是,如果我们销毁一个activity class,所有未保存的数据都会被清除。
但是whatsapp的聊天页面似乎很有趣,因为在我退出聊天页面并重新进入该特定聊天页面后,我会看到未保存的文本保留在编辑文本框中。
那么,他们会怎么做呢?与"savedInstanceState"有关吗?
My understanding is that if we destroy an activity class, all the unsaved data will be cleared.
是的,当然,除非重要数据在 onPause()
方法中保存在某些持久存储中并在 onResume()
方法中检索。当 Activity 被 used 或 OS 杀死并稍后重新启动时,这是持久化数据的常用方法。
But whatsapp's chat page seems to be quite interesting as after i quit the chat page and re-enter that particular chat page, i would see the unsaved text remain in the edittext box.
当您点击返回按钮并再次进入聊天页面时就是这种情况。我确认当您终止应用程序本身时情况并非如此。所以一个很好的猜测是 activity 永远不会被杀死并且数据通过 savedInstanceState
.
正常情况下,当您点击设备的Back
按钮时,会调用生命周期方法onPause
。也许 WhatsApp 将 EditText
中的文本存储到 SharedPreference
中。当您再次转到此 Activity
时,此 EditText
的文本将被设置为存储到 SharedPreference
中的文本。当然,在这种情况下 WhatsApp
,只有它的开发人员知道。
参考Ikshvaku后裔的评论 我创建了一个 sqlite table 来将未发送的消息存储在 edittext 中。 它会达到与 whatsapp 相同的结果。技巧确实不难