如果活动有以下内容,我该如何重启我的应用程序或MainActivity?
android:launchMode="singleTop"
我试过了:
Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage( getBaseContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
但是由于singleTop这个不起作用,还有另一种方法可以做到这一点吗?
答案 0 :(得分:2)
我做了我的主题切换器:
Intent intent = getIntent();
finish();
startActivity(intent);
基本上,我首先调用finish(),并且我正在使用与此活动开始时完全相同的意图。这似乎可以解决问题?
更新:正如下面的Ralf所指出的,Activity.recreate()是API 11及更高版本的出路。如果您在API11 +环境中,这是首选。如果您使用的是API 10或更低版本,您仍然可以检查当前版本并调用上面的代码段。 (请不要忘记向拉尔夫的回答投票!)
public void reload() {
Intent intent = getIntent();
overridePendingTransition(0, 0);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
overridePendingTransition(0, 0);
startActivity(intent);
}
或
private void restartFirstActivity()
{
Intent i = getApplicationContext().getPackageManager()
.getLaunchIntentForPackage(getApplicationContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK );
startActivity(i);
}
答案 1 :(得分:1)
使用此:
Intent finishIntent = new Intent( this,
activity_that_you_want_to_return.class);
finishIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(finishIntent);
答案 2 :(得分:1)
尝试重启,这可能会对你有所帮助
Intent i = cntxt.getPackageManager().getLaunchIntentForPackage(cntxt.getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addCategory(Intent.CATEGORY_HOME);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
cntxt.startActivity(i);