Android在使用Android.app.Application中声明的变量时出现问题

Android在使用Android.app.Application中声明的变量时出现问题,android,global-variables,Android,Global Variables,我是android新手。我在使用我的应用程序时遇到问题。我有一些变量需要跟踪应用程序中的各种活动。所以我在一个扩展android.app.Application的类中声明了它们。事实上,我认为这些变量只有在应用程序激活之前才会激活。如果我们关闭应用程序,我想他们不会活着了 例如:我有一些变量“n”,我在全局上下文中使用扩展android.app.Application的类声明了它。所以我做了一些活动,最后当应用程序即将完成并退出时,n增加到7。所以下一次,当我尝试新运行应用程序时,我看到n仍然保

我是android新手。我在使用我的应用程序时遇到问题。我有一些变量需要跟踪应用程序中的各种活动。所以我在一个扩展android.app.Application的类中声明了它们。事实上,我认为这些变量只有在应用程序激活之前才会激活。如果我们关闭应用程序,我想他们不会活着了

例如:我有一些变量“n”,我在全局上下文中使用扩展android.app.Application的类声明了它。所以我做了一些活动,最后当应用程序即将完成并退出时,n增加到7。所以下一次,当我尝试新运行应用程序时,我看到n仍然保留值7,但不是0(在应用程序类中的变量声明期间,我将其初始化为0),并且它的增量为8,9…但不是1,2(我预期会发生的情况)…为什么即使在应用程序完成并退出后,它仍保留值?我对android.app.Application类的理解错了吗?所以我希望我的应用程序只在执行应用程序之前跟踪变量。。如果应用程序完成,当它重新运行时,我想让它重新初始化(如n再次初始化为0)。。。我该怎么做

在Android平台上(同样在iOS上),当您按下后退(或主页)按钮时,您的应用程序不会退出。您的应用程序只是被带到后台,这就是为什么您的应用程序仍然处于活动状态,因此保存了您以前设置的变量。由Android操作系统来决定你的应用程序何时真的死机——通常是操作系统需要清除一些系统资源(通常是内存)的时候

你应该考虑到这一点来设计你的应用程序

所以回到你的情况-首先你应该检查一下。有一些生命周期方法,如onPause或onStop,您可以根据自己的喜好覆盖和重置应用程序状态。

正如bt smitalm所说的“当您按下后退键时,您的应用程序不会退出”。要关闭应用程序(并终止它),请先卸载所有活动,然后执行:

System.exit(0);

如上所述,您可以对每个活动调用
onBackPressed()
方法上的
finish()
方法。 在每个活动中重写onBackPressed()

@Override
public void onBackPressed() 
{
        finish();
}

因为正在关闭的应用程序并不意味着它已退出。如何关闭应用程序?@Seraphim我在所有活动中都有finish()…我以为堆栈上没有其他活动了,应用程序会因为释放所有资源而被杀死..我以为拥有finish()呢在所有的活动中都会达到目的..堆栈上没有更多的活动..应用程序会被杀死..所以我错了。。谢谢.“卸货”是指完成所有活动?然后wtiting System.exit(0)…r8?System.exit(0)确实会退出应用程序,但它有点不规范,因为它绕过了标准实践。它在某些场景中可能很有用,但大多数情况下最好避免使用,并正确使用活动生命周期方法。是的,没错。我的应用程序上有“退出”按钮,一切正常。做你的决定。哪个在顶部()?在应用程序类中?不…我的应用程序中要执行的最后一个活动..那不管用吗?