android中少用静态变量(android静态变量static生命周期)

在android中,要少用静态变量。

我现在做的一个应用中,之前的开发人员使用静态变量来存储cookie,这个全局的静态变量用来验证身份。

这时客户反应,应用长时间不使用,再次使用,会提示身份过期。

后来经查,问题基本确定在静态变量上。

上stackoverflow查了android中static变量的生命周期,有人这么说

Lifetime of a static variable: A static variable comes into existence when a class is loaded by the JVM and dies when the class is unloaded,if you create an android application and initialize a static variable, it will remain in the JVM until one of the following happens:

1. the class is unloaded
2. the JVM shuts down
3. the process dies

我们应用出现的情况应该就是进程被系统杀掉导致的。

后来这个情况也发现了,就是不断地打开应用,当系统内存不够用时,应用进程会被杀掉。这时再打开应用,就出现了身份过期,也即静态变量为空的情况

静态变量,要慎用!

时间: 2024-10-12 21:53:42

android中少用静态变量(android静态变量static生命周期)的相关文章

android开发3:四大基本组件的介绍与生命周期

android开发3:四大基本组件的介绍与生命周期 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器,. 生命周期 是指进程周期 – 创建到结束的过程 进程类别 前台进程:当前正在前台运行的进程 可见进程:显示在前台中,但用户并未在和其进行交互 服务进程:为用户提供服务的进程 后台进程 空进程:该进程一般是为了缓存机制而存在的 组件介绍 Activity(表现层) 应用程序中,一个Act

C的变量类型、作用域与生命周期的总结

C的变量类型.作用域与生命周期的总结 最近在看"C Programing Language" (Kernighan, Ritchie)关于外部变量的讨论,之前在学C的时候对这些extern, auto, static, register等不是太理解,这本书讲的很详细,现在总结一下. 首先, C的变量分成局部变量 local variable 和全局变量 global variable. [注] C 中局部(local)变量(也有翻译成本地变量),也可以叫做内部(internal)变量

C++中 简单查看临时对象,局部对象的生命周期,及拷贝构造函数(测试代码)

#include <iostream> using namespace std; class A {     public: A(int a = 5) {     cout<<"A constructor "<<this<<endl; } ~A() {     cout<<"A destructor "<<this<<endl; } A(const A & r) {     

【Android 细节(二)】业务操作类的生命周期中的开始方法

为了防止内存泄露或者其他更重要的原因,为业务操作类构建生命周期是必不可少的. 即在类里封装onStart(),onPause(),onFinish()方法.比如我要写一个Android中处理数据库的业务类,他的特点是所有的数据操作是以key-value的方式存储. Databaser.java: <span style="font-family:Microsoft YaHei;font-size:18px;">// 构造方法 public PhoneDbAdapter(Co

05课Android中的布局2---【呼啸Android开发视频教程】

今天是第五课,主要讲了android中的tableLayout和frameLayout. 没有讲解absoluteLayout.这个布局我们应该杜绝使用. 播放地址: 第五课点击打开 关于呼啸Android视频: 这套视频的最大特点是实用,哪些该讲,哪些不该讲,我都做了细致的考虑.没有虚头八脑,卖弄学问,也没用冗长的东西.一切都力求简单明了,清晰透彻.

Android(java)学习笔记170:Activity的生命周期

1.首先来一张生命周期的总图: 2.几个典型的场景 (1)Activity从被装载到运行,执行顺序如下: onCreate()  ->    onStart() ->  onResume(): (2)Activity从运行到暂停,再到继续回到运行 onPause() ->  onResume ()        这个过程发生在Activity被别的Activity遮住了部分UI,失去了用户焦点,另外那个Activity退出之后,这个Activity再次获得运行.整个过程中,该Activi

程序在运行过程中变量的保存位置与生命周期

本例说明了一个程序在运行的时候,各种变量所保存的位置.因为位置不同,自然,变量的生命周期也各不相同. 代码示例: #include <iostream> using namespace std; int nGNum1; void showStackAddress(){    cout<<"address of showStackAddress() is:\t["<<(void*)&showStackAddress<<"]

《Android开发艺术探索》读书笔记之Activity的生命周期

两种不同情况下的Activity生命周期 (1)典型情况下的生命周期 指在有用户参与的情况下,Activity所经过的生命周期的改变. (2)异常情况下的生命周期 指Activity被系统回收或者由于当前设备的Configuration发生改变重而导致Activity被销毁传重建. 看看官方文档的Activity生命周期图 注意以下几点: (1)onstart()和onResume()从实际使用过程来说差不多,但是onstart()的时候Activity虽然可见啦但是还在后台,onResume(

Android中配置JDK和SDK的环境变量

JDK环境变量的配置: 右击"计算机"或"我的电脑",选择"属性"-->"高级"或"高级系统设置"(如下图1)-->"环境变量"(如下图2),如下图: 图1 图2 单机"环境变量",出现如下图3的界面, 图3 然后在"系统变量"处选择"新建"(红色标记处),出现如下图4界面, 图4 下面进行正式的配置部分: (1)在