Android中用Application类实现全局变量
在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类实现全局变量相关推荐
- Android中Application类用法
Application类 Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系 ...
- android获得application类对象,android之Application类介绍
Application类 application是用来保存全局变量的,并且是在package创建的时候就跟着存在了. 当我们需要创建全局变量的时候,而直接在application中去实现. 只需要调用 ...
- Android 使用Application类保存应用的全局数据
在实际应用我们经常需要对数据进行交互与保存,但Intent中默认的方法对传输数据是有类型限制的,当我们需要传输或保存一个复杂的泛型数据时,使用Application是一个很好的解决办法. 顾名思义,A ...
- Android采用Application总结一下
什么是 Application Application和Activity,Service由于是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象.用 ...
- Android使用Application总结
对于application的使用,一般是 在Android源码中对他的描述是; * Base class for those who need to maintain global applicati ...
- Android application类
什么是application类? application是维护应用全局状态的基类,应用进程启动时android系统会创建application类并调用类的onCreate()函数,applicatio ...
- 在Android开发中怎样使用Application类
转载地址:http://www.jianshu.com/p/3138f9c351e8 --- 在Android开发中怎样使用Application类 自己独立开发项目才发现以前对Application ...
- Android 实例解说Application类
版本:1.0 日期:2014.3.28 版权:© 2014 kince 转载注明出处 何为Application,有何用途?Google官方文档是这样说的:维护全局应用程序的状态,使用的时候继承于它创 ...
- Android中application全局变量被系统回收的问题
google 推荐使用application来代替static来存储变量.但事实上application存储的全局变量也经常会被系统回收. 比如当系统把你的application给整个杀掉的时候.出现 ...
最新文章
- 阿里云网盘,开放申请啦!非会员下载 10MB/s!有图有真相!
- LeetCode算法题8:递归和回溯1
- JavaScript字符串的单引号和双引号问题
- Android:WiFi连接之一
- kettle使用数据库来生成序列_Python办公自动化:使用python来自动生成word文档
- cocos2dx build_native.sh clean 命令报错的解决
- 轻量化网络:SqueezeNext
- Spring浅入浅出——不吹牛逼不装逼
- IDEA最全使用教程
- Logback分别打印info日志和error日志
- Devexpress 10.1.6 源代码重新编译成功(DXperience 10.1.6 重新编译)附所有需要用到的资源下载地址 (收藏)...
- win10、win8/8.1、win7系统激活工具-----也可激活Office各版本
- julia安装源_在Linux系统中下载与安装Julia 1.0.1
- java设置excel自动调整行高_Java 设置Excel自适应行高、列宽
- Channel~scatter and gather
- java mail 群发邮件_javamail群发邮件
- 常微分方程求解器ODE solver
- git 将暂存区文件提交_git文件状态,暂存与提交
- 集合综合案例:播放器
- [转]浅析360的危害 我为什么推荐卸载360
热门文章
- Java并发学习之玩转线程池
- hbase.client.keyvalue.maxsize的默认值
- Cloudera Manager安装之利用parcels方式(在线或离线)安装3或4节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(Ubuntu14.04)(五)...
- 颜色缩减(带Trackbar)【从毛星云Opencv3编程入门P75 P111例程改编】
- MySQL 数据库命令
- Spring Boot Admin 2.1.4,Spring Boot 应用的 Admin UI
- 小朋友的视频直播之 nginx-rtmp
- Python+Django+SAE系列教程14-----使表单更安全
- scala_until
- mysql从某表中查询数据插入到另一表的处理