如何停止应用在后台运行?

7
如何阻止Android应用程序在后台运行? 我希望我的应用程序每次加载时都能从头开始。如何以编程方式实现这一点?

请简要说明您的问题。 - Lucifer
尝试查看这篇帖子:https://dev59.com/o1vUa4cB1Zd3GeqPsEo-它可能会对你有所帮助。 - Ajay
实际上,我正在开发一个cocos2D应用程序,并且每次都想从头开始游戏。当在onStop()上调用finish()时,应用程序在启动运行时关闭。这是cocos2D的问题吗? - James
5个回答

7
您可以使用 onResume 事件重新加载应用程序,或者在这里查看编辑: 实际上,当用户浏览您的应用程序时,您需要使用这些函数重新加载它。 enter image description here

7

重写您的活动的onStop方法:

@Override
public void onStop(){
    super.onStop();
    finish();
}

我认为每次重新启动应用程序都是一个不好的主意,更好的方法是重写onStart方法,并在此处处理“重新启动”。

实际上,您的应用程序并没有在后台“运行”。 Android操作系统将其保存在内存中,或将活动状态保存到设备中(然后您可以使用onCreate方法中的savedInstanceState参数加载它)。


当用户暂停手机或离开活动时,这将终止该活动。 - Mark Gjøl
@MarkGjøl,我以为这就是他想要的。然而这是个坏主意) - Dmitry Zaytsev
1
这也是我理解的OP所问的。那确实是一个问题的答案,但这是不好的做法。整个Android生态系统都基于这样一个事实:用户不应该担心“终止”或“从头开始”一个应用程序。 - Guillaume
这听起来像是一个没有经过深思熟虑的问题(否则它大概会更长:)),没有考虑到手机通常的使用方式。我更喜欢Ocanal的方法,即在onResume中重新启动应用程序。使用这种方法,当用户按下电源按钮时,他将仅退出活动,而不是从头开始。 - Mark Gjøl
1
@MarkGjøl,我同意你的观点,但我认为“不好的方法”也应该在答案中提到 :) - Dmitry Zaytsev

4

在添加了finish();之后,该代码将完全停止应用程序。

System.runFinalizersOnExit(true);
System.exit(0);
android.os.Process.killProcess(android.os.Process.myPid());

2
整个Android生态系统的基础是用户不需要担心“终止”或“从头开始”应用程序。如果您每次都需要从头开始启动应用程序,那可能是因为您在“从头开始”的任务中有一些不应该存在的任务,而应该在onResume中的某个位置。如果您想要更详细的答案,请给我们更多的细节。

0

你应该使用Intent.FLAG_ACTIVITY_CLEAR_TOP来结束活动池中运行的所有其他活动,并调用第一个活动,从中可以请求退出应用程序


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