Android - 启动新活动时保存活动状态

时间:2011-02-02 10:24:52

标签: android android-activity android-intent state task

我目前正在处理应该具有以下行为的应用程序: 在其中一个活动中,用户可以将不同的项目选择到列表中。在这样做时,他应该能够拍照,保存并返回之前的活动。

我遇到以下问题:当用户在拍摄照片后返回活动时,进度(基本上是所选项目)将丢失。

我尝试在我的活动中使用android:launchMode =“singleInstance”(以及singleTask)和android:alwaysRetainTaskState =“true”来保存其当前状态(当用户离开应用程序执行某些操作时它很有用否则,然后再回来吧)。我尝试用FLAG_ACTIVITY_NEW_TASK午餐ACTION_IMAGE_CAPTURE以模拟相同的行为(在我脑海中的某个地方,我认为它应该与从主屏幕中捕获图片活动相同),但没有效果。我甚至尝试用startActivityforResult在图片活动中吃午饭,希望我的活动不会丢失,但仍然没有效果。

我知道我可以使用Bundle savedInstanceState通过覆盖onPause,onResume,Create(etc)来手动保存和恢复状态,但实际上很多自定义组件中的数据都不容易序列化,所以我会喜欢避免这种情况。

嗯我想我的问题是如何重现与alwaysRetainTaskState清单属性相同的行为?或者无论如何都可以轻松保存我的活动状态?或者我做错了什么,错过了明显的错误?

非常感谢!

1 个答案:

答案 0 :(得分:4)

  

我知道我可以使用Bundle savedInstanceState通过覆盖onPause,onResume,Create(etc)来手动保存和恢复状态,但实际上很多自定义组件中的数据都不容易序列化,所以我会喜欢避免这种情况。

你会“喜欢”什么并不重要。无论如何,您都需要此代码来处理配置更改(例如,从纵向切换到横向)。请实施onSaveInstanceState()onRestoreInstanceState(),然后退出您上一段中所有其他不当黑客攻击(例如singleInstancealwaysRetainTaskState)。