在Android中重新加载活动
在Android中重新加载Activity
是否是一个好习惯?
什么是最好的办法呢? this.finish
然后this.startActivity
与活动Intent
?
你可以简单的使用
finish(); startActivity(getIntent());
从内部刷新Activity
。
这是我做了什么以改变偏好改变返回后的活动。
@Override protected void onResume() { super.onResume(); this.onCreate(null); }
这本质上导致活动重绘自己。
更新:更好的方法是调用recreate()方法。 这将导致活动被重新创build。
我需要在其中一个应用程序中更新消息列表,所以在closures对话框之前,我刚刚执行了主要UI活动的刷新。我确信还有更好的方法来完成此操作。
// Refresh main activity upon close of dialog box Intent refresh = new Intent(this, clsMainUIActivity.class); startActivity(refresh); this.finish(); //
Android包含一个stream程pipe理系统,用于处理活动的创build和销毁,这大大抵消了手动重新启动活动所带来的好处。 您可以在Application Fundamentals上查看更多关于它的信息
最好的做法是确保你的onPause和onStop方法释放你不需要的任何资源,并使用onLowMemory来将你的活动减less到最小。
对于那些不希望看到眨眼后重新()方法简单地使用
finish(); overridePendingTransition(0, 0); startActivity(getIntent()); overridePendingTransition(0, 0);
开始一个意图你的同样的activity
并closuresactivity
。
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
在某些情况下,这是最好的做法,如果你select这样做的话,这不是一个好主意,它是上下文驱动的,使用以下方法是从一个活动传递给她的儿子的最好方式:
Intent i = new Intent(myCurrentActivityName.this,activityIWishToRun.class); startActivityForResult(i, GlobalDataStore.STATIC_INTEGER_VALUE);
事情是每当你完成()从activityIWishToRun你回到你的生活活动
我不认为这是一个好主意,最好是实施一个更清洁的方法。 例如,如果您的活动持有表单,清理方法可以清除表单中的每个小部件,并删除所有临时数据。 我想这就是你想要的:将活动恢复到初始状态。
经过一段时间的实验后,我发现重新开始一个活动没有意外的后果。 另外,我相信这和Android在默认情况下会改变方向非常相似,所以我没有理由不这样做。
我有另一种方法,如:将我的activity的launchMode
设置为singleTop
,而不调用finish()
,只需startActivity(getIntent())
就可以完成这项工作。 只需要关心onCreate()
和onNewIntent
的新数据。 用Sush的方式,应用程序可能会像AMAN SINGH所说的那样闪烁。 但是,我认为即使他修正了“眨眼睛”的问题,但是AMAN SINGH的方法仍然会创造一个新的活动,这是不必要的。
这个问题太晚了,但如果有人在寻找一个解决scheme,这里是。