Android 跳转清空 Activity
在 Android 开发中,我们经常会遇到需要跳转到新的 Activity 页面的场景。有时候我们希望在跳转时清空之前的 Activity 栈,即将之前的所有页面都关闭,只保留当前的页面。本文将介绍如何在 Android 中实现跳转并清空 Activity 栈的方法。
背景知识
在 Android 开发中,每个 Activity 都有一个任务栈(Task Stack)来管理多个 Activity 的生命周期和顺序。默认情况下,每个应用程序都有一个主任务栈(Main Task Stack),所有的 Activity 都会被加入到这个任务栈中。
当我们启动一个新的 Activity 时,默认情况下,新的 Activity 会被加入到任务栈的顶部,并成为当前的 Activity。而之前的 Activity 会保持在任务栈中,当用户按下返回按钮时,会回到上一个 Activity。
跳转并清空 Activity 栈
为了实现跳转并清空 Activity 栈的功能,我们可以使用以下方法:
Intent intent = new Intent(this, NewActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
在上面的代码中,我们创建了一个 Intent 对象,并指定要跳转的目标 Activity(这里用 NewActivity 作为示例)。然后,我们通过调用 setFlags()
方法设置了两个标志:FLAG_ACTIVITY_NEW_TASK
和 FLAG_ACTIVITY_CLEAR_TASK
。
-
FLAG_ACTIVITY_NEW_TASK
表示要在一个新的任务栈中启动 Activity。如果之前没有任务栈存在,系统会创建一个新的任务栈;如果已经存在任务栈,则会清空任务栈并创建一个新的任务栈。 -
FLAG_ACTIVITY_CLEAR_TASK
表示在启动新的 Activity 之前清空任务栈。也就是说,之前的所有 Activity 都会被关闭,只保留当前的 Activity。
最后,我们调用 startActivity()
方法来启动目标 Activity。
代码示例
下面是一个完整的示例代码,演示了如何跳转并清空 Activity 栈:
// MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, NewActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
});
}
}
// NewActivity.java
public class NewActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new);
}
}
在上面的代码中,我们在 MainActivity
中设置了一个按钮,并在按钮的点击事件中执行了跳转并清空 Activity 栈的操作。点击按钮后,会启动 NewActivity
并清空之前的所有页面。
类图
下面是一个简单的类图,展示了 MainActivity
和 NewActivity
的关系:
classDiagram
class MainActivity
class NewActivity
MainActivity --> NewActivity
流程图
下面是一个简单的流程图,展示了跳转并清空 Activity 栈的流程:
flowchart TD
A[MainActivity 点击按钮]
A --> B[创建 Intent 对象]
B --> C[设置标志 FLAG_ACTIVITY_NEW_TASK 和 FLAG_ACTIVITY_CLEAR_TASK]
C --> D[启动 NewActivity]
在上面的流程图中,我们从 MainActivity
的按钮点击事件开始,依次经过创建 Intent 对象、设置标志和启动 NewActivity
这三个步骤。
总结
在 Android 开发中,我们可以使用 Intent
对象的 setFlags()
方法来实现跳转并清空 Activity 栈的功能。通过设置标志 FLAG_ACTIVITY_NEW_TASK
和 FLAG_ACTIVITY_CLEAR_TASK
,我们可以在启动新的 Activity 时清空之前的所有页面。
希望本文对你理解 Android 跳转并清空 Activity 栈有所帮助!