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

时间:2014-01-14 10:48:27

标签: android global-variables

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

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

3 个答案:

答案 0 :(得分:1)

在Android平台上(以及在iOS上类似)当您按下(或主页)按钮时,您的应用程序不会退出。您的应用程序刚刚进入后台,这就是您的应用程序仍处于活动状态的原因,从而保存您之前设置的变量。由Android操作系统决定你的应用程序何时被杀死 - 通常是当操作系统需要清除某些系统资源(通常是内存)时。

您应该考虑到这一点来设计您的应用。

回到你的情况 - 首先你应该查看Activity lifecycle。有一些生命周期方法,比如onPause或onStop,你可以根据需要覆盖和重置你的应用程序状态。

答案 1 :(得分:0)

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

System.exit(0);

答案 2 :(得分:0)

如上所述,您可以针对每项活动在finish()方法上调用onBackPressed()方法。 在每项活动中覆盖onBackPressed()

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