Android 使用onResume()刷新活动

Android 使用onResume()刷新活动,android,android-intent,lifecycle,back-button,onresume,Android,Android Intent,Lifecycle,Back Button,Onresume,我一辈子都不知道如何在按下后退按钮后刷新活动。我目前有一个活动A,它激发了转到B的意图,而在B幕上,如果你按下后退键,我想返回到A幕,但让它自己刷新。我可以使用此意图刷新当前的活动: Intent refresh = new Intent(this, Favorites.class); startActivity(refresh); this.finish(); 但是我不知道如何正确使用onResume()函数在返回后刷新我的act A。您需要将更新活动UI的代码放在onRes

我一辈子都不知道如何在按下后退按钮后刷新活动。我目前有一个活动A,它激发了转到B的意图,而在B幕上,如果你按下后退键,我想返回到A幕,但让它自己刷新。我可以使用此意图刷新当前的活动:

Intent refresh = new Intent(this, Favorites.class);
    startActivity(refresh);
    this.finish();

但是我不知道如何正确使用onResume()函数在返回后刷新我的act A。

您需要将更新活动UI的代码放在
onResume()方法中。也许你应该发布更多的代码或者解释你到底想更新什么。

使用
startActivityForResult(intent,requestCode)
活动A开始
活动B

然后在
活动A中
覆盖
onActivityResult(int-requestCode,int-resultCode,Intent-data)


在那里,您可以刷新您的
活动A

如果您从
活动B
返回时需要
活动A
的特殊行为,您应该使用
startActivityForResult(Intent Intent,int requestCode)
而不是
startActivity(Intent Intent Intent)

这样,您将能够通过重载ActivityResult(int requestCode、int resultCode、Intent Intent Intent)上的
来检测
ActivityB
ActivityA
中的终止情况。


即使按下“后退”按钮终止
活动b
,此功能仍有效。默认情况下,
resultCode
将被
RESULT\u取消

当前刷新方案有效的可能原因是您正在标准启动模式下运行活动。这意味着每次调用startActivity(refresh)都会生成活动a的一个新实例。由于每个新实例都经过onCreate(),因此创建这些不必要的实例会使您的活动看起来像是在刷新。要正确执行此操作,您确实应该在onCreate()中标识负责“刷新”活动的代码,并将其移动到onResume(),正如下面Ovidiu所建议的那样。我有一个活动包含一个listview,其中包含从数据库检索到的5个字符串。它使用BackService方法运行,即如果数据库中有更改,我将获得一个带有字符串的新通知。如果单击该通知,listview也应该包含该字符串。OnResume()允许我这样做吗?
 startActivityForResult(new Intent(this, ActivityB.class), REQUEST_CODE); 
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);

    if (requestCode == REQUEST_CODE) {
        doRefresh(); // your "refresh" code
    }
}