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

2022-09-01 15:30:54

我在应用中实现了一个按钮,它使用以下代码清除了所有共享首选项:

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

现在的问题是,每当我使用按钮时,我都需要退出活动并重新打开它才能看到结果。我尝试通过简单地使按钮使用此代码重新打开活动来解决此问题:

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

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

finish();
startActivity(getIntent());

现在这工作正常,活动被刷新,然后我只需要单击后退按钮一次。但是,有没有另一种方法可以刷新活动而不会“闪烁”进来和退出?如您所知,每次打开新活动时,它都会闪入和闪出,因此应用程序会滞后一秒钟。有没有办法通过绕过它来刷新活动?


答案 1

好吧,最好更新活动的内容,但是如果它太复杂,您可以使用此方法覆盖默认动画:

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

答案 2

您可以将标志(链接)添加到您的意图中,以消除所有动画。但是,正如其他答案所述,最好刷新您体内的数据 。Intent.FLAG_ACTIVITY_NO_ANIMATIONreOpenActivity


推荐