【发布时间】:2018-01-03 01:28:18
【问题描述】:
我的应用的主要活动是使用待处理意图从前台服务通知启动的。这按预期工作。但是,如果用户已经打开了主要活动,则新活动会在信息保存之前启动。
场景:主要活动已打开,前台服务正在运行。用户对主要活动中的文本进行了一些更改,然后决定(无论出于何种原因)点击前台服务的通知。这将再次启动主要活动。然而,新实例的onStart() 和onResume() 被调用在前一个实例的onSavedInstanceState() 或onStop() 被调用。
结果:用户在点击通知之前失去了他们在主要活动上所做的工作。
如何防止这些数据丢失?有没有办法确保在从通知打开新实例之前保存它(我正在使用共享首选项)?
我很惊讶新实例的 onResume() 在前一个实例的 onSaveInstanceState() 之前被调用。我已经研究过使用onPause(),但文档不鼓励在那里保存数据。
【问题讨论】:
-
为什么又启动了MainActivity?如果用户单击通知,为什么不直接返回现有的 MainActivity?这会解决你的问题。
标签: android android-intent android-activity service sharedpreferences