默认启动模式,这种启动模式每次都会创建新的实例,新创建的Activity会置于栈顶。
栈顶复用模式,启动一个具有singleTop启动模式的Activity,系统会判断当前栈顶是不是要启动的Activity,如果是则不会创建新的Activity,会直接复用当前Activity, 同时回调 onNewIntent() 方法。 如果栈顶不是当前Activity,则会重新创建新的Activity,即使当前栈中存在此Activity。
栈内复用模式,启动一个具有singleTask启动模式的Activity,系统会首先在任务栈中寻找此Activity:如果任务栈中有实例存在,复用这个Activity,并且将位于该Activity上的其他Activity全部销毁;如果不存在,则会创建该Activity,并放入栈中。
这种启动模式与singleTask相似,只允许系统中存在一个目标Activity,与singleTask不同的是,启动具有singleInstance启动模式的Activity,需要创建一个新的任务栈来存放它,任务栈中不能再有其他Activity。
跳转至同一项目下另一Activity
最常见的启动方式 startActivity(new Intent(MainActivity.this, testActivity.class)); 通过Intent的ComponentName ComponentName cn = new ComponentName(MainActivity.this,testActivity.class) ; Intent intent = new Intent() ; intent.setComponent(cn) ; startActivity(intent) ; 初始化Intent时指定Activity Intent intent = new Intent(); intent.setClass(MainActivity.this, testActivity.class); startActivity(intent);不同应用间启动Activity
Intent intent = new Intent(); intent.setAction("android.intent.action.TESTACTIVITY"); intent.addCategory("android.intent.category.DEFAULT"); startActivity(intent);Activity在系统中处于获得焦点状态,可以与用户进行交互,即当前Activity在活动栈最顶端。 生命周期中触发的函数顺序:onCreate() -> onStart() -> onResume()
Activity失去焦点但仍然处在可见或者部分可见状态,或者设备进入休眠状态,一个住在暂停状态的Activity只有在系统资源极度匮乏的情况下才会被强制结束。 运行状态到暂停状态调用:onPause() 暂停状态恢复运行调用:onResume() 弹出Dialog不会变为该状态,也不会调用生命周期中的方法
停止状态一般指当前Activity被另一Activity完全覆盖,所以系统会经常因内存不足而将处在Stopped状态的Activity强行结束。 启动另一Activity时调用:onPause() -> onStop() 返回时调用:onRestart() -> onStart() -> onResume()
该状态Activity被销毁,(1)用户操作导致(2)内存不足系统强行结束。
当系统配置发生变化时,Activity会被杀死,系统会调用 onPause() -> onStop() -> onDestroy() ,同时会调用 onSavedInstanceState() 方法来保存Activity的状态,这个方法调用在 onStop() 前,与 onPause() 没有既定的时序关系,这个方法只有在Activity被异常终止的时候才会调用,正常情况是不会调用的。当Activity重新创建时,系统会调用 onRestoreInstanceState() 并把Activity销毁时 onSavedInstanceState() 保存的Bundle对象传递给 onRestoreInstanceState() 和 onCreate() 方法。因此我们可以通过这两个方法来判断Activity是否被重建,从时序来说,onCreat应该在 onRestoreInstanceState() 之前执行。
优先级最高:Running状态 优先级中等:Paused状态 优先级最低:Stopped状态