如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型;而在android中如果使用这样的全局变量就不符合Android的框架架构,但是可以使用一种更优雅的方式就是使用Application context。 
  首先需要重写Application,主要重写里面的onCreate方法,就是创建的时候,初始化变量的值。然后在整个应用中的各个文件中就可以对该变量进行操作了。 
  启动Application时,系统会创建一个PID,即进程ID,所有的Activity就会在此进程上运行。那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值,换句话说,我们在某一个Activity中改变了这些全局变量的值,那么在同一个应用的其他Activity中值就会改变。下面举个例子详细介绍一下应用步骤。 
下面是MyApp.java 

package com.android.test; import android.app.Application; public class MyApp extends Application{     private String mylabel ;         public String getLabel(){         return mylabel;     }        public void setLabel(String s){         this.mylabel = s;     }     @Override     public void onCreate() {         // TODO Auto-generated method stub         super.onCreate();         setLabel("Welcome!"); //初始化全局变量            }    } 

下面是mainActivity.java 

package com.ginwave.test; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; public class mainActivity extends Activity {         private MyApp myApp;         @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);         myApp = (MyApp) getApplication(); //获得自定义的应用程序MyApp         Log.i("guoll", "InitLabel:"+myApp.getLabel());   //将我们放到进程中的全局变量拿出来,看是不是我们曾经设置的值         myApp.setLabel("Changing!");  //修改一下         Log.i("guoll", "ChangeLabel:"+myApp.getLabel()); //看下,这个值改变了没有         Intent intent = new Intent();  //再看一下在另一个Activity中是取到初始化的值,还是取到修改后的值         intent.setClass(this, otherActivity.class);         startActivity(intent);     } } 

另一个otherActivity.java: 

package com.android.test; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class otherActivity extends Activity{         private MyApp myApp;         @Override     protected void onCreate(Bundle savedInstanceState) {             super.onCreate(savedInstanceState);             setContentView(R.layout.main);                         myApp = (MyApp) getApplication();  //获得自定义的应用程序MyApp             Log.i("guoll", "OhterActivity receive the Label:"+myApp.getLabel()); //查看变量值是否修改了     }        } 

修改配置文件ApplicationManifest.xml,将要运行的应用程序MyApp加进去: 
<?xml version="1.0" encoding="utf-8"?>                                                                                                                  




转载地址:http://oyeal.iteye.com/blog/941183

更多相关文章

  1. [置顶] Android系统架构
  2. android第一个应用程序
  3. Android(安卓)应用性能评估
  4. Android应用开发入门五问
  5. Android开发便签7:如何让通讯录匹配N位号码
  6. 【转】Android(安卓)签名详解
  7. Flutter Android(安卓)端热修复(热更新)实践
  8. Android(安卓)应用界面设计
  9. Android(安卓)开发者不得不面对的六个问题

随机推荐

  1. Go 开发关键技术指南 | Go 面向失败编程
  2. JS简单实现:根据奖品权重计算中奖概率实现
  3. 基于 HTML5 + WebGL 的宇宙(太阳系) 3D
  4. Dubbo-04 20190317
  5. 技术问答-15
  6. 手动升级 --从 12.1.x.x 到 18.x.x.x 的
  7. MySQL 续集 03
  8. MySQL 续集 04
  9. influxDB安装部署及入门
  10. Oracle如何使用spool导出utf8字符集的文