android中static修饰的变量在Activity销毁后,还存在吗

 我来答
匿名用户
推荐于2018-04-06
展开全部
1. static变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。两者的区别是:   对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。 2. static代码块 static代码块是类加载时,初始化自动执行的。如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。 3. static方法 static方法可以直接通过类名调用,任何的实例也都可以调用,因此static方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。 static方法只能访问static的变量和方法,因为非static的变量和方法是需要创建一个对象才能访问的,而static的变量/方法不需要创建任何对象。 ******** static的数据或方法,属于整个类的而不是属于某个对象的,是不会和类的任何对象实例联系到一起。所以子类和父类之间可以存在同名的static方法名,这里不涉及重载。所以不能把任何方法体内的变量声明为static,例如: fun() { static int i=0; //非法。 } 其实理解static是只有一个存储地方,而使用时直接使用,不需要创建对象,就能明白以上的注意事项。 另外,一般的类是没有static的,只有内部类可以加上static来表示嵌套类。
百度网友43da1a4
2017-10-01 · TA获得超过305个赞
知道小有建树答主
回答量:337
采纳率:68%
帮助的人:37.7万
展开全部
使用静态变量public static int state = 0;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
桂纶镁小号
2018-04-05
知道答主
回答量:6
采纳率:0%
帮助的人:5362
展开全部

[java] view plain copy

  • import android.app.Activity;  

  • import android.os.Bundle;  

  • import android.util.Log;  

  • public class ErrorTestActivity extends Activity {  

  • /** Called when the activity is first created. */  

  • private static boolean Flag = false;  

  • public void onCreate(Bundle savedInstanceState) {  

  • super.onCreate(savedInstanceState);  

  • setContentView(R.layout.main);  

  • Log.i("wangchao","wocao"+Flag);  

  • Flag = true;  

  • }  

  • }  


  • 程序第一次运行,打印信息为false,之后退出程序,再次运行,打印信息为true。

  • 当窗口消毁时,Activity的静态变量是存在的,因为静态变量是属全局变量、静态变量是整个应用程序的公共变量(即使上面写的是私有),所以Activity消毁时,静态变量是不会清除的。但当什么时候才会清除呢,

    重写onDestory方法,在onDestory里添加android.os.Process.killProcess(android.os.Process.myPid());把线程干掉,再次调用就正常了。

    上面说过静态变量是整个应用程序的,所以只有当各个应用程序的进程消毁时,静态变量才会毁,所以调用android.os.Process.killProcess(android.os.Process.myPid());就正常了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式