重新启动活动维护状态,没有动画

时间:2013-07-19 11:08:21

标签: android

当用户点击我的应用程序中的按钮时,它将改变正在处理的文档中的一些数据,此时我希望活动重建其UI。如果可能的话,我想以这种方式这样做,因为提前知道确切需要更新哪些视图是很难的。

我尝试获取intent,在活动上调用finish(),然后以相同的意图调用StartActivity。使用这种方法我可以禁用所有挂起的转换,所以它没有问题,因为它创建了一个活动的新实例,其状态无法恢复(除非我做了一些非常愚蠢的事情,比如保存到首选项)。这是不可接受的,因为活动包含 ViewPager ,每当我更新内容时,使用此方法返回到第0页。

接下来我尝试使用Activity.Recreate()。这解决了未保存状态的问题,因为它似乎是活动的同一个实例。但在这种情况下,我无法弄清楚如何禁用所有动画,因此屏幕上总会有闪光灯。

有没有办法让an activity.recreate()电话看起来与用户无缝连接?或者,还有更好的方法?由于这都在 viewpager 中,刷新片段也可以正常工作,但这不是从片段类本身发生的,而是每个提供UI部分的许多对象。

1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,当我在活动中调用recreate时它会闪烁,我最终使用下面的代码:

// uncomment below line for blink effect :P
// recreate();
// restart activity without blinking :-)
Intent intent = new Intent(MyActivity.this, MyActivity.class);
startActivity(intent); // start same activity
finish(); // destroy older activity
overridePendingTransition(0, 0); // this is important for seamless transition

我知道我来不及回答你的问题,但我希望它能帮助其他面临同样问题的开发人员。