1.android的四种启动方式分别是:
standard(默认的启动方式):每次都会创建新的类的实例,在同一个任务栈里面
singleTop:如果该类的实例在栈的栈顶则直接调用而不会重新生成新的类的实例,如果不是在栈顶则会在同一个任务栈内生成新的类的实例
singleTask:在一个任务栈里面如果类的实例在栈顶,则直接调用,如果不在栈顶则调出该类实例,并且杀掉该实例上面的所有activity实例 (B-C-D-A)如果要调出D类的实例会直接杀掉B和C 此时任务站里面只有D 按正常逻辑 是D 和 A 实际中不存在A的 此时任务栈中只有D 在按后退键就会直接关闭程序
singleInstance:独立的任务栈 只放了一个实例
配置信息在配置文件里面:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.hb.launchmode">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!--这里instance-->
<activity
android:name=".MainActivity"
android:launchMode="standard">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Launch_SingleTop" android:launchMode="singleTop"></activity>
</application>
</manifest>
1 instance模式启动的前后(任务栈相同,类的实例不同)
2 singleTop的模式下运行的效果图:
自己启动自己么有反应
当启动别人在启动自己(大家可以发现创建了新的实例)
3 singleTask :
启动前
从另一个activity中启动mainActivity
按下后退键直接退出
4 singleInstance:
任务栈在35 和 39中切换。
小伙伴们如有不懂的话我放出代码,自己去试下