从"近期任务"中排除当前活动

lst*_*kov 21 android android-activity

我的应用程序在后台运行,在某些时候会显示活动以故意中断用户的流程.我的活动启动了一项新任务,该任务在前台时出现在"近期任务"列表中.有什么方法可以预防吗?设置android:excludeFromRecents不起作用 - 仅在暂停后,"近期任务"中不再显示活动.

清单看起来像:

<activity
    android:name="com.example.recenttasks.MainActivity"
    android:excludeFromRecents="true">
</activity>
Run Code Online (Sandbox Code Playgroud)

和活动以这种方式开始:

@Override
public void onReceive(Context context, Intent intent) {
    Intent i = new Intent(context, MainActivity.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(i);
}
Run Code Online (Sandbox Code Playgroud)

Ric*_*rdo 9

你提到的关键是

在前景中出现在"近期任务"列表中

我认为你无法改变这种行为.我刚刚测试了我的应用程序,同样的事情发生了.如果我在前台进行活动时按下"最近任务"按钮,则会显示在那里.当我离开它到另一个活动或我的手机的主屏幕时,活动不再列出.

我还在最新Android版本附带的内置DeskClock应用程序中对此进行了测试,并且在触发新警报时会出现相同的行为.请注意,该AlarmAlertFullscreen应用的活动与您在问题中提到的参数相同.

我不确定你是否可以绕过这个或者为什么你需要在第一时间,因为一旦失去焦点,活动就不再列出了.

  • 报告.完成onOnCloseSystemDialogs没有多大帮助 - 点击"近期任务"后活动不会消失,这与android内部的UsbDebuggingActivity不同.我已经决定不花太多时间在其上并通过其他方式解决我的初始问题,所以我不必从近期任务中排除任何内容. (2认同)

kal*_*pvs 2

你在清单中定义了它就足够了,但它还没有到来..

好的..尝试将此标志也添加到您的Intnet并启动活动..

intnet.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
Run Code Online (Sandbox Code Playgroud)