重新启动MAIN活动后,Android moveTaskToBack()不起作用

时间:2016-10-01 05:56:22

标签: android android-activity

这是我的onBackPressed:

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        moveTaskToBack(false);
    }
}

这是我重新启动MAIN活动的方式:

public void restart() {
    Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(i);
}

moveTaskToBack 在重新启动之前运行良好。 但重启后它不再有效。 我该怎么办?

2 个答案:

答案 0 :(得分:0)

如果您从DrawerMainActivity.java打开Fragment,则此链接可以帮助您Handle Back Pressed

答案 1 :(得分:0)

我找到了解决方案。 一种方法是用 moveTaskToBack(true); 替换 moveTaskToBack(false); 。 但这实际上并没有解决问题。 真正的解决方案是添加finish();重新启动另一个活动后,新的活动将成为根活动。 现在代码是这样的:

public void restart() {
Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
finish();
}