我有这样的活动设计
我有一个主要活动和5个子活动(从1到5)。
从主要活动我可以调用任何这些子活动,当我调用子活动时,我没有完成主要活动,因为我可能需要稍后回来。 因此主要活动在后台运行
但是当我输入子活动时,我正在进行呼叫。我正在调度呼叫活动以执行呼叫操作。但除了“通话活动”之外,我想杀死所有活动。主要活动仍然在后台。如何杀死它以及所有其他活跃的活动。
答案 0 :(得分:1)
您可以使用它来杀死整个应用程序
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
答案 1 :(得分:0)
你应该使用片段,而不是活动。这将允许您在所有主要和子任务中保持一个活动,并在完成后立即致电finish()
。
finish()
主要活动,当您需要从子项返回主活动时,再次启动主要活动,并在意图,如果有必要,所以它可以在正确的地方找到...所以你只有堆栈上的活动,如果finish()
没有任何东西。
另一个想法是让一个接收器在主要活动中监听可以完成()主要活动。然后在子活动中,向主活动发送一个意图,告诉它在子活动退出时退出。
答案 2 :(得分:0)
也许值得一看有关活动的不同发布模式。例如,您可以使用“root”活动上的singleInstance
始终返回相同的实例 - 这意味着当您调用startActivity(...)
时Android不会在后台堆栈上推送另一个Activity实例,但会弹出介于中间的所有内容并将意图传递给已存在的实例。或者,singleTask
会给您类似但略有不同的行为。
阅读Android开发者网站上的Task and Back Stack文章。它给出了很好的概述并解释了不同的发射模式。
答案 3 :(得分:0)
您可以检查活动管理器中的活动堆栈运行循环并查看当前活动是否是您的活动,否则将其杀死
代码如下
ActivityManager activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
activityManager.killBackgroundProcesses(this.getApplication().getPackageName());