Android中用Application类实现全局变量

最近在项目中,遇到了application这个类,开始不知道有什么用,经过学习后才知道它的用途也蛮大的,举个例子,如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型;而在android中如果使用这样的全局变量就不符合Android的框架架构,但是可以使用一种更优雅的方式就是使用Application context。

我们先看看一下这段说明:

Base class for those who need to maintain global application state. You

can  provide your own implementation by specifying its name in your

AndroidManifest.xml‘s <application> tag, which will cause that class

to be instantiated for you when the process for your application/package is

created.

意思是:application类是一个基类,这个基类的作用是为了获取整个应用程序的状态。你可以自己继承或实现这个类,当你要使用自己拓展的application类的时候,只要在manifest.xml中的<application>标签中name应用自己定义的类就行了,这样做的结果是:当你的应用程序或者包所在的进程创建的时候,这个类就会被实例化。

怎么使用它呢?首先需要重写Application,主要重写里面的onCreate方法,就是创建的时候,初始化变量的值。然后在整个应用中的各个文件中就可以对该变量进行操作了。        启动Application时,系统会创建一个PID,即进程ID,所有的Activity就会在此进程上运行。那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值,换句话说,我们在某一个Activity中改变了这些全局变量的值,那么在同一个应用的其他Activity中值就会改变。下面举个例子详细介绍一下应用步骤:

代码如下:

[java] view plaincopy

  1. yy.android.yapp;
  2. import android.app.Application;
  3. public class YApp extends Application{
  4. private String ylabel ;
  5. public String getLabel(){
  6. return ylabel;
  7. }
  8. public void setLabel(String s){
  9. this.ylabel = s;
  10. }
  11. @Override
  12. public void onCreate() {
  13. // TODO Auto-generated method stub
  14. super.onCreate();
  15. setLabel("YUZHIBOYI_CSND!"); //初始化全局变量
  16. }
  17. }

下面是mainActivity.java

[java] view plaincopy

  1. package yy.android.yapp;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.util.Log;
  6. public class mainActivity extends Activity {
  7. private YApp yApp;
  8. @Override
  9. public void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.main);
  12. yApp = (YApp) getApplication(); //获得自定义的应用程序YApp
  13. Log.i("YAnGl", "InitLabel:"+yApp.getLabel());   //将我们放到进程中的全局变量拿出来,看是不是我们曾经设置的值
  14. yApp.setLabel("YUZHIBOYI!");  //修改一下
  15. Log.i("YAnG", "ChangeLabel:"+yApp.getLabel()); //看下,这个值改变了没有
  16. Intent intent = new Intent();  //再看一下在另一个Activity中是取到初始化的值,还是取到修改后的值
  17. intent.setClass(this, otherActivity.class);
  18. startActivity(intent);
  19. }
  20. }

另一个otherActivity.java:

[java] view plaincopy

  1. package yy.android.yapp;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.util.Log;
  5. public class otherActivity extends Activity{
  6. private YApp yApp;
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.main);
  11. yApp = (YApp) getApplication();  //获得自定义的应用程序MyApp
  12. Log.i("YAnG", "OhterActivity receive the Label:"+yApp.getLabel()); //查看变量值是否修改了
  13. }
  14. }

修改配置文件ApplicationManifest.xml,将要运行的应用程序YApp加进去:

[html] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.android.test"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <!-- 在这里,将默认的Application设置成自己做的YApp-->
  7. <application android:name="YApp"
  8. android:icon="@drawable/icon"
  9. android:label="@string/app_name"
  10. >
  11. <activity android:name=".mainActivity"
  12. android:label="@string/app_name">
  13. <intent-filter>
  14. <action android:name="android.intent.action.MAIN" />
  15. <category android:name="android.intent.category.LAUNCHER" />
  16. </intent-filter>
  17. </activity>
  18. <activity android:name=".otherActivity">
  19. </activity>
  20. </application>
  21. </manifest>

运行的结果: 03-04 16:53:17.295: INFO/guoll(650): InitLabel:YUZHIBOYI_CSND! 03-04 16:53:17.295: INFO/guoll(650): ChangeLabel:YUZHIBOYI 03-04 16:53:17.426: INFO/guoll(650): OhterActivity receive the Label:YUZHIBOYI

好了,用法就这样!

Android中用Application类实现全局变量

时间: 2024-08-27 20:41:00

Android中用Application类实现全局变量的相关文章

Android中Application类用法

原文:http://www.cnblogs.com/renqingping/archive/2012/10/24/Application.html Application类 Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系统的一些信息. Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例(si

android开发 - Application类

本文摘自google的android官网翻译,如果有不对的地方,请各位大神指点 网址:http://developer.android.com/reference/android/app/Application.html Application,Activity,Service,content provider都是Android框架的系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系统的一些信息. 启动一个android应用程序,就等于启动了一个进程,一个进

【转】Android中Application类用法

Application类 Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系统的一些信息. Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例(singleton)模式的一个类. 通常我们是不需要指定一个Application的,系统会自动帮我们创建,如果需要创建自己的Application,那

Android之Application类用法

Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系统的一些信息. Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例(singleton)模式的一个类. 通常我们是不需要指定一个Application的,系统会自动帮我们创建,如果需要创建自己的Application,那也很简单!创建一个类继承A

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

在实际应用我们经常需要对数据进行交互与保存,但Intent中默认的方法对传输数据是有类型限制的,当我们需要传输或保存一个复杂的泛型数据时,使用Application是一个很好的解决办法. 顾名思义,Application对应整个应用,就如Activity对应当前的活动窗口一样,当我们需要使用它的时候,一定要在AndroidManifest.xml中对它进行声明. <application android:name="MeterApplication" android:allowB

Android使用Application总结

Application 配置全局Context 第一步.写一个全局的单例模式的MyApplication继承自Application 覆盖onCreate ,在这个方法里面实例化Application 第二步.配置全局的Context <application android:name="com.appstore.service.MyApplication" ></application> 第三步.使用,使用的时候用的时候根据类的名称访问Context Andr

Android 使用Application总结

Application 配置全局Context 第一步.写一个全局的单例模式的MyApplication继承自Application 覆盖onCreate ,在这个方法里面实例化Application 第二步.配置全局的Context <application android:name="com.appstore.service.MyApplication" ></application> 第三步.使用,使用的时候用的时候根据类的名称访问Context Andr

android &amp;lt;application&amp;gt; 开发文档翻译

由于本人英文能力实在有限,不足之初敬请谅解 本博客仅仅要没有注明"转",那么均为原创.转贴请注明本博客链接链接 <application>语法:    <application android:allowTaskReparenting=["true" | "false"]                 android:allowBackup=["true" | "false"]     

Android笔记——Application的作用

一.Application是什么 Application和Actovotu,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息.通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己 的Application,也很简单创建一个类继承 Application并在manifest的application标签中进行注册(只需要给Application标签增加个name属