重置活动堆栈而不启动新活动

4

我是一名能够翻译文字的助手。

我有一个广播接收器,它会在闹钟事件触发时检查应用程序是否处于空闲状态(用户没有活动)。现在,我想重置活动堆栈并将应用程序带回到第一个/默认活动。

但如果我像这样做:

Intent intent = new Intent(context, StartUp.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP 
                | Intent.FLAG_FROM_BACKGROUND | Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);

然后我的应用程序就会进入前台。

我希望这一过程是静默的,这样用户就不会被我的应用程序打扰(因为显然他正在做其他事情)。

所以我的问题是,如何在不启动活动的情况下清除活动堆栈?


但是,如果您想清除活动堆栈并且不启动任何活动,则只需关闭应用程序!否则,当用户返回时应呈现哪个活动。 - Boris Strandjev
我假设如果你清除了活动堆栈,那么默认/第一个活动将被呈现。关闭应用程序也是一种选择,但是我需要知道是否有任何我的活动正在屏幕上显示。如果没有,我可以关闭应用程序,如果有,我可以像问题描述的那样使用意图。 - Drejc
2个回答

3

检查您的任何活动是否在前台似乎已经在这里介绍了,虽然我还没有尝试过。如果您想终止整个应用程序,请执行以下操作:

System.runFinalizersOnExit(true);
System.exit(0);

好的,你已经完成了。希望这能对你有所帮助。


0
从我的角度来看,为什么不将状态保存到共享首选项中,当用户再次启动您的应用程序时,您可以检测到需要清除并重新启动活动。即使用延迟堆栈重置的概念。可能还有其他影响,例如 BroadcastReceiver中的SharedPreferences似乎无法更新?,这只是一个想法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接