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 相同的结果。技巧确实不难