Android中的重载活动

安卓中重载Activity是一个好习惯吗?

最好的方法是什么?this.finish,然后使用活动Intent?

530606 次浏览

我不认为这是个好主意……最好实现一个更干净的方法。例如,如果您的活动持有一个表单,cleaner方法可以清除表单中的每个小部件并删除所有临时数据。我想这就是您想要的:将活动恢复到初始状态。

在某些情况下,这是最好的做法,但在其他情况下,这不是一个好主意,这是环境驱动的 如果你选择这样做,使用以下是最好的方式从一个活动传递给她的儿子:

    Intent i = new Intent(myCurrentActivityName.this,activityIWishToRun.class);
startActivityForResult(i, GlobalDataStore.STATIC_INTEGER_VALUE);

事情是每当你完成()从activityIWishToRun你回到你的一个活动

Android包括一个进程管理系统,它可以处理活动的创建和销毁,这在很大程度上抵消了手动重新启动活动的任何好处。你可以在应用程序基础看到更多关于它的信息

好的做法是确保你的onPause和onStop方法释放任何你不需要保留的资源,并使用onLowMemory将你的活动需求减少到绝对最小。

在尝试了一段时间后,我发现重新启动一个活动并没有意想不到的后果。此外,我认为这与Android在改变方向时默认做的事情非常相似,所以在类似的情况下我没有理由不这样做。

我需要在我的一个应用程序中更新消息列表,所以我只是在关闭我所在的对话框之前刷新了我的主UI活动。我相信还有更好的方法来实现这一点。

// Refresh main activity upon close of dialog box
Intent refresh = new Intent(this, clsMainUIActivity.class);
startActivity(refresh);
this.finish(); //

你可以简单地使用

finish();
startActivity(getIntent());

从自身内部刷新Activity

这就是我所做的重新加载活动后,从一个首选项更改返回。

@Override
protected void onResume() {


super.onResume();
this.onCreate(null);
}

这本质上导致活动重绘自身。

更好的方法是调用recreate()方法。这将导致重新创建活动。

以相同的activity开始,并关闭activity

Intent refresh = new Intent(this, Main.class);
startActivity(refresh);//Start the same Activity
finish(); //finish Activity.

我也有同样的问题

import android.support.v4.content.IntentCompat;


intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |IntentCompat.FLAG_ACTIVITY_CLEAR_TASK);

这段代码为我工作。 Android api 17

对于那些不想看到重现()后闪烁方法简单使用的人

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

我有另一种方法,比如:将我的活动的launchMode设置为singleTop,不调用finish(),只需startActivity(getIntent())即可完成工作。你只需要关心onCreate()onNewIntent中的新数据。有了Sush的方法,应用程序可能会像AMAN SINGH说的那样眨眼。但是AMAN SINGH的方法仍然会创造一个新的活动,这在某种程度上是不必要的,即使他解决了“眨眼”的问题,我认为。

问这个问题已经太迟了,但如果有人正在寻找解决方案,这里就是。

我看到了之前给出的使用Intent重新加载活动的答案。这些都可以工作,但你也可以使用Activity类本身给出的rebuild()方法来做同样的事情。

不写这个

//当对话框关闭时刷新主活动

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

这可以通过写这个来实现

recreate();

简单地使用

this.recreate();

这将触发活动中的onCreate方法

在一个活动中,你可以调用recreate()来“重新创建”活动(API 11+)

重新加载你的整个活动可能是一项繁重的任务。 只需将需要刷新的部分代码放入(芬兰湾的科特林):

override fun onResume() {
super.onResume()
//here...
}

Java:

@Override
public void onResume(){
super.onResume();
//here...


}

并在需要时调用“onResume ()”。

登录后,我有同样的问题,所以我使用

@Override
protected void onRestart() {
this.recreate();
super.onRestart();
}

我使用了这个,它没有工作很好 finish() < / p >

startActivity(getIntent());

对我来说,它是工作的,它没有创建另一个意图和同样的意图新数据加载。

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