2011-02-02 171 views
1

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

我遇到以下问题:当用户在拍摄照片后返回到活动状态时,进度(基本上选定的项目)将丢失。我试图在我的活动上使用android:launchMode =“singleInstance”(以及singleTask)和android:alwaysRetainTaskState =“true”来保存它的当前状态(并且在用户离开应用程序时它工作得很好别的什么,然后再回来)。我尝试用FLAG_ACTIVITY_NEW_TASK来模拟ACTION_IMAGE_CAPTURE意图来模拟相同的行为(我脑海中的某处我认为它应该和主屏幕上的图片活动一样),但是没有效果。我甚至试图用startActivityforResult尝试用图片活动进行午餐,希望以某种方式我的活动不会丢失,但仍然没有效果。

我知道我可以使用Bundle savedInstanceState手动保存和恢复状态,方法是在Create(etc)上重写onPause,onResume,但实际上有很多自定义组件中的数据不易于序列化,我喜欢避免这种情况。

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

非常感谢!

回答

4

我知道我可以使用捆绑savedInstanceState手动保存,并通过覆盖在onPause,的onResume恢复状态,上创建(等),但实际上很多在那些不容易序列化的自定义组件的数据,所以我想避免这种情况。

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

+0

很明显,我喜欢的是应用程序命令所规定的。关于那些“不恰当”的黑客,也许我错过了这一点,但他们为什么会不适应?他们喜欢要避免的事情吗?看起来对我来说很整洁,但是,再一次,也许我想念一些信息。如果当我回到主屏幕并再次访问应用程序时,如果我能从他们那里得到所需的行为,如果我从我的活动中启动应用程序,认为我能找到同样的东西真的很糟糕吗? – Ours 2011-02-02 13:08:33