要在使用FLAG_ACTIVITY_CLEAR_TASK
和FLAG_ACTIVITY_NEW_TASK
后修复返回按钮仍然可用,可以通过在启动新任务时保存任务栈的根引用,并在需要时恢复根引用来实现。
以下是一个示例代码,演示如何在启动新任务后修复返回按钮可用:
// 在Activity A 中启动新任务
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
// 在启动新任务之前保存根引用
SharedPreferences preferences = getSharedPreferences("MyPrefs", MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("rootActivity", getLocalClassName());
editor.apply();
接下来,在需要修复返回按钮可用的地方,可以使用以下代码获取根引用并启动它:
SharedPreferences preferences = getSharedPreferences("MyPrefs", MODE_PRIVATE);
String rootActivity = preferences.getString("rootActivity", null);
if (rootActivity != null) {
try {
Intent intent = new Intent(this, Class.forName(rootActivity));
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
通过这种方式,用户将能够在新任务中使用返回按钮,而不会返回到旧任务的活动中。
请注意,上述示例代码假设你已经正确设置了MainActivity
作为新任务的启动活动。根据你的应用程序的具体情况,你可能需要相应地更改MainActivity
为你的目标活动类。