刷新活动,而不重新打开它?

我在我的应用程序中实现了一个button,用以下代码清除所有的sharedpreferences:

context.getSharedPreferences("bifrostPrefs", 0).edit().clear().commit(); 

现在问题是,每当我使用button,我需要退出活动,并重新打开它看到的结果。 我试着解决这个问题,只需按下这个代码重新打开活动:

 Intent reOpen = new Intent (Bifrost.this, Bifrost.class); startActivity(reOpen); 

我的想法似乎很聪明,直到我注意到,如果我重新打开活动,然后我需要按两次后退button返回到主要活动。 所以我做了一些研究,发现这个代码:

 finish(); startActivity(getIntent()); 

这现在工作正常,活动刷新,然后我只需要点击后退button一次。 但是,如果没有“闪”出来,还有另一种更新活动的方式吗? 如你所知,每次你开一个新的活动,它会闪烁,所以应用程序滞后一秒。 有没有办法绕过这个刷新一个活动?

Solutions Collecting From Web of "刷新活动,而不重新打开它?"

那么,更新活动的内容会更好,但是如果太复杂,则可以使用此方法覆盖默认animation:

 finish(); overridePendingTransition( 0, 0); startActivity(getIntent()); overridePendingTransition( 0, 0); 

您可以将标志Intent.FLAG_ACTIVITY_NO_ANIMATION ( 链接 )添加到您的reOpen意图,以放弃所有animation。 但正如其他答案所述,更好地刷新你的Activity的数据。

你有一些意见,可能会改变他们的价值/大小根据您的共享偏好的价值? 如果是的话,创build一个方法来初始化视图,并在onCreate()方法和onClick()方法上调用该方法。