-->

LaunchMode及近期的应用原理(LaunchMode & Recent App Princip

2019-10-17 08:12发布

我有一个WidgetResultActivity和NotificationResultActivity,我都设置了launchmode = singleInstance。 但是他们有不同的行为:WidgetResultActivity不会从最近开启的,而NotificationResultActivity将始终从近期(这是单独开不MainActivity!)打开。 所以,我怎么能禁止从最近的,THX NotificationResultActivity开放。

    <activity
        android:name=".WidgetResultActivity"
        android:launchMode="singleInstance"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />

    <activity
        android:name=".NotificationResultActivity"
        android:launchMode="singleInstance"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />

编辑:刚才看到我的ATester应用程序,当我从通知开...

测试代码:

    NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(R.drawable.ic_launcher, getString(R.string.app_name), java.lang.System.currentTimeMillis());
    notification.flags = Notification.FLAG_NO_CLEAR;
    Intent intent = new Intent(this, ExcludeFromRecentActivity.class);
    // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    PendingIntent activity = PendingIntent.getActivity(this, R.string.app_name, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    notification.setLatestEventInfo(this, "Open Activity: " + ABox.class.getSimpleName(), "new Intent()", activity);
    manager.notify(R.string.app_name, notification);

测试清单:

    <activity
        android:name=".ATester1"
        android:label="@string/app_name" >
    </activity>
    <activity
        android:name=".ATester2"
        android:label="@string/app_name" >
    </activity>
    <activity
        android:name=".ATester3"
        android:label="@string/app_name" >
    </activity>
    <activity
        android:name=".ExcludeFromRecentActivity"
        android:excludeFromRecents="true"
        android:label="@string/app_name" >
    </activity>

测试图片:

第一名:

第二:

第三:

第4名:

编辑:我真正需要的是DIALOG BEHEVIOR LIKE活动,我会请在另一篇文章。 @ WebnetMobile.com,谢谢大家都是一样的。

Answer 1:

为了防止被添加到最近用过的活动,加

android:excludeFromRecents="true"

<activity>在清单的声明:

<activity
    android:name=".NotificationResultActivity"
    android:launchMode="singleInstance"
    android:excludeFromRecents="true"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />

请参阅: 安卓:excludeFromRecents android系统中的文档。



Answer 2:

android:taskAffinity="" 
android:excludeFromRecents="true" 
android:launchMode="singleInstance"

taskAffinity是必要的,这对我的作品。



文章来源: LaunchMode & Recent App Principle