android系统四大组件之Activity
Activity的生命周期#
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("MainActivity","onCreate()被调用");
}
@Override
protected void onStart() {
super.onStart();
Log.d("MainActivity","onStart()被调用");
}
@Override
protected void onResume() {
super.onResume();
Log.d("MainActivity","onResume()被调用");
}
@Override
protected void onPause() {
super.onPause();
Log.d("MainActivity","onPause()被调用");
}
@Override
protected void onStop() {
super.onStop();
Log.d("MainActivity","onStop()被调用");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d("MainActivity","onDestroy()被调用");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d("MainActivity","onRestart()被调用");
}
}
当我们一开始启动app时,会依次调用OnCreate()->OnStart()->OnResume()
当我们将app移动到后台时,会依次调用OnPause()->OnStop()
当我们再次将app从后台点击到前台屏幕上是,会依次调用OnRestart()->OnStart()->OnResume()
当我们将app退出时,会依次调用OnPause()->OnStop()->OnDestroy()
activity四种启动模式#
activity 栈(task栈)#
每个app启动时都会创建一个默认的task栈用来存放和管理activity,一个app可以有多个task栈。
这个task栈是先进后出的栈,默认模式下的activity每启动一次就会创建一个实例并入栈(Standard模式)。
四种启动模式#
Standard模式#
默认的模式每启动一个activity都会创建一个实例,并把启动的activity入栈。
例如再次启动activity C,则会再次创建一个实例并将新启动的activity C入栈,同时会调用其OnCreate()->OnStart()->OnReSume()
SingleTop模式#
如果启动的activity已经位于栈顶则直接复用栈顶的activity(不会在调用OnCreate->OnStart->OnResume, 但是会在复用activity时调用OnNewIntent),如果不在栈顶则新创建一个实例activity。
第一种情况
第二种情况
SingTask模式#
当启动的activity在栈中,将对应的activity上方的activity都弹出并销毁,复用此activity(调用OnNewIntant)。如果不在栈中就重新创建并实例化压栈。
SingleInstance模式#
app会为拥有此模式的activity单独建立一个task栈,并且所有的app中只允许存在一个此activity。
当一个app启动activity时,只要其存在其他任意app的task栈中,其都会为此activity创建新的栈并将其入栈(调用OnNewInstant)。不存在就创建并实例化入栈。
activity之间相互调用#
通过Intent类实现antivity之间的相互调用
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
上述代码将当前activity类与另一个activity类绑定,并通过调用startActivity来启动第二个activity(SecondActivity)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!