在Java中如果要使用全局变量,一般定义public static类型的变量。但是这种方法不符合Android的框架架构,Android中要使用Application context。

Application是一个基类,这个基类的作用是获取整个App的状态,我们需要自己定义一个类来继承这个基类。代码如下:

package com.tianjf;  import android.app.Application;  public class MyApplication extends Application {  private boolean mHasPassword;  public boolean ismHasPassword() {  return mHasPassword;  }  public void setmHasPassword(boolean mHasPassword) {  this.mHasPassword = mHasPassword;  }  @Override  public void onCreate() {  mHasPassword = true;  super.onCreate();  }
}  


我们定义了一个MyApplication继承自Application,并定义了一个全局变量mHasPassword,然后复写基类的onCreate方法,onCreate负责对所有全局变量赋初期值。

我们还需要把自定义的Application类添加到AndroidManifest.xml里面,代码如下:

<application  android:name="MyApplication"
。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。  </application>  


这样做的目的:App的进程被创建的时候,这个类就会被实例化,onCreate方法就会被执行,给所有全局变量赋初期值。

这样,所有的Activity就共同拥有这个类里面的变量了。

下面用两个Activity来测试一下,当一个Activity改变了全局变量的值之后,看看另一个Activity能不能取到改变后的值。

ApplicationDemoActivity.java

package com.tianjf;  import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;  public class ApplicationDemoActivity extends Activity implements  OnClickListener {  private static final String TAG = "ApplicationDemoActivity";  @Override  public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.main);  findViewById(R.id.button).setOnClickListener(this);  }  @Override  public void onClick(View v) {  switch (v.getId()) {  case R.id.button:  MyApplication myApplication = (MyApplication) getApplication();  Log.i(TAG, String.valueOf(myApplication.ismHasPassword()));  myApplication.setmHasPassword(false);  Intent intent = new Intent(this, AnotherActivity.class);  startActivity(intent);  break;  default:  break;  }  }
}  


AnotherActivity.java

package com.tianjf;  import android.app.Activity;
import android.os.Bundle;
import android.util.Log;  public class AnotherActivity extends Activity {  private static final String TAG = "AnotherActivity";  @Override  protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.another);  MyApplication myApplication = (MyApplication) getApplication();  Log.i(TAG, String.valueOf(myApplication.ismHasPassword()));  }
}  

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="fill_parent"  android:layout_height="fill_parent"  android:orientation="vertical" >  <TextView  android:layout_width="fill_parent"  android:layout_height="wrap_content"  android:text="@string/hello" />  <Button  android:id="@+id/button"  android:layout_width="fill_parent"  android:layout_height="wrap_content"  android:text="Start another activity" />  </LinearLayout>  

another.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="fill_parent"  android:layout_height="fill_parent"  android:orientation="vertical" >  <TextView  android:layout_width="fill_parent"  android:layout_height="wrap_content"  android:text="@string/hello" />  </LinearLayout>  


Android中用Application类实现全局变量相关推荐

  1. Android中Application类用法

    Application类 Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系 ...

  2. android获得application类对象,android之Application类介绍

    Application类 application是用来保存全局变量的,并且是在package创建的时候就跟着存在了. 当我们需要创建全局变量的时候,而直接在application中去实现. 只需要调用 ...

  3. Android 使用Application类保存应用的全局数据

    在实际应用我们经常需要对数据进行交互与保存,但Intent中默认的方法对传输数据是有类型限制的,当我们需要传输或保存一个复杂的泛型数据时,使用Application是一个很好的解决办法. 顾名思义,A ...

  4. Android采用Application总结一下

    什么是 Application Application和Activity,Service由于是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象.用 ...

  5. Android使用Application总结

    对于application的使用,一般是 在Android源码中对他的描述是; * Base class for those who need to maintain global applicati ...

  6. Android application类

    什么是application类? application是维护应用全局状态的基类,应用进程启动时android系统会创建application类并调用类的onCreate()函数,applicatio ...

  7. 在Android开发中怎样使用Application类

    转载地址:http://www.jianshu.com/p/3138f9c351e8 --- 在Android开发中怎样使用Application类 自己独立开发项目才发现以前对Application ...

  8. Android 实例解说Application类

    版本:1.0 日期:2014.3.28 版权:© 2014 kince 转载注明出处 何为Application,有何用途?Google官方文档是这样说的:维护全局应用程序的状态,使用的时候继承于它创 ...

  9. Android中application全局变量被系统回收的问题

    google 推荐使用application来代替static来存储变量.但事实上application存储的全局变量也经常会被系统回收. 比如当系统把你的application给整个杀掉的时候.出现 ...

最新文章

  1. 阿里云网盘,开放申请啦!非会员下载 10MB/s!有图有真相!
  2. LeetCode算法题8:递归和回溯1
  3. JavaScript字符串的单引号和双引号问题
  4. Android:WiFi连接之一
  5. kettle使用数据库来生成序列_Python办公自动化:使用python来自动生成word文档
  6. cocos2dx build_native.sh clean 命令报错的解决
  7. 轻量化网络:SqueezeNext
  8. Spring浅入浅出——不吹牛逼不装逼
  9. IDEA最全使用教程
  10. Logback分别打印info日志和error日志
  11. Devexpress 10.1.6 源代码重新编译成功(DXperience 10.1.6 重新编译)附所有需要用到的资源下载地址 (收藏)...
  12. win10、win8/8.1、win7系统激活工具-----也可激活Office各版本
  13. julia安装源_在Linux系统中下载与安装Julia 1.0.1
  14. java设置excel自动调整行高_Java 设置Excel自适应行高、列宽
  15. Channel~scatter and gather
  16. java mail 群发邮件_javamail群发邮件
  17. 常微分方程求解器ODE solver
  18. git 将暂存区文件提交_git文件状态,暂存与提交
  19. 集合综合案例:播放器
  20. [转]浅析360的危害 我为什么推荐卸载360

热门文章

  1. Java并发学习之玩转线程池
  2. hbase.client.keyvalue.maxsize的默认值
  3. Cloudera Manager安装之利用parcels方式(在线或离线)安装3或4节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(Ubuntu14.04)(五)...
  4. 颜色缩减(带Trackbar)【从毛星云Opencv3编程入门P75 P111例程改编】
  5. MySQL 数据库命令
  6. Spring Boot Admin 2.1.4,Spring Boot 应用的 Admin UI
  7. 小朋友的视频直播之 nginx-rtmp
  8. Python+Django+SAE系列教程14-----使表单更安全
  9. scala_until
  10. mysql从某表中查询数据插入到另一表的处理