小编San*_*alp的帖子

Manifest 中定义的启动模式是否会覆盖通过 Intent 标志调用的启动模式,还是相反?

案例一:- 当意图标志覆盖清单时

在清单文件中,我将 Activity_B 定义为 singleTop。这些是清单文件中的相关行:-

....
<activity android:name=".Activity_A" android:launchMode="standard">
...
<activity android:name=".Activity_B" android:launchMode="singleTop"/>
<activity android:name=".Activity_C" android:launchMode="standard"/>
<activity android:name=".Activity_D" android:launchMode="standard"/>
....
Run Code Online (Sandbox Code Playgroud)

完整的清单文件如下:-

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".Activity_A" 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=".Activity_B" android:launchMode="singleTop"/>
    <activity android:name=".Activity_C" android:launchMode="standard"/>
    <activity android:name=".Activity_D" android:launchMode="standard"/>
</application>
Run Code Online (Sandbox Code Playgroud)

现在创建了一个方法,该方法在运行时将 Activity_B 设置为 singleTask,该方法如下所示:-

protected void startActivity(Activity activity, Class targetActivityClass){
    Intent intent=new Intent(activity,targetActivityClass);
    if(targetActivityClass.equals(Activity_B.class)) {
        getIntent().setFlags(Intent.FLAG_ACTIVITY_NEW_TASK| Intent.FLAG_ACTIVITY_CLEAR_TOP);
    }
    startActivity(intent);

}
Run Code Online (Sandbox Code Playgroud)

现在,当我运行这个应用程序时,我注意到 Intent 标志覆盖了清单文件中的启动模式。

我是如何得出这个结论的:-基本上我注意到,当我启动多个活动后转到 Activity_B …

android android-manifest android-intent

5
推荐指数
1
解决办法
1680
查看次数

标签 统计

android ×1

android-intent ×1

android-manifest ×1