Android中的全局变量

本文介绍在Android中通过继承Application类实现全局变量管理的方法,包括创建自定义Application子类、配置Manifest文件及在Activity中应用实例。相较于静态类,此方法更安全且符合Android设计理念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Android中,我们可以通过继承Application类来实现应用程序级的全局变量,这种全局变量方法相对静态类更有保障,直到应用的所有Activity全部被destory掉之后才会被释放掉。

我们可以在Activity中使用getApplication(),方法来获得Application,它是代表我们的应用程序的类,使用它可以获得当前应用的主题,资源文件中的内容等,这个类更灵活的一个特性就是可以被我们继承,来添加我们自己的全局属性。

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

1、写Application类的子类。

 1 public class MyApplication extends Application {   
 2     private String name;   
 3     @Override  
 4     public void onCreate() {   
 5         super.onCreate();   
 6         setName(NAME); //初始化全局变量   
 7     }   
 8     public String getName() {   
 9         return name;   
10     }   
11     public void setName(String name) {   
12         this.name = name;   
13     }   
14     private static final String NAME = "MyApplication";   
15 }

2、在配置文件ApplicationManifest.xml中配置MyApplication。

 1 <application android:icon="@drawable/icon" android:label="@string/app_name"  
 2     android:name=".MyApplication">  <!-- 就是这儿,将我们以前一直用的默认Application给他设置成我们自己做的MyApplication -->
 3     <activity android:name=".MyFirstActivity"  
 4         android:label="@string/app_name">   
 5         <intent-filter>   
 6             <action android:name="android.intent.action.MAIN" />   
 7             <category android:name="android.intent.category.LAUNCHER" />   
 8         </intent-filter>   
 9     </activity>   
10     <activity android:name=".MySecondActivity"></activity>   
11 </application> 

3、在Activity中应用Application例子:

 1 public class MyFirstActivity extends Activity {   
 2     private MyApplication app;   
 3     @Override  
 4     public void onCreate(Bundle savedInstanceState) {   
 5         super.onCreate(savedInstanceState);   
 6         setContentView(R.layout.main);   
 7         app = (MyApplication) getApplication(); //获得我们的应用程序MyApplication   
 8         Log.e("MyFirstActivityOriginal", app.getName());   //将我们放到进程中的全局变量拿出来,看是不是我们曾经设置的值   
 9         app.setName("is cool");  //OK,现在我们开始修改了   
10         Log.e("MyFirstActivityChanged", app.getName()); //再看下,这个值改变了没有   
11         Intent intent = new Intent();  //更重要的是我们可以看在别的Activity中是拿到初始化的值,还是修改后的   
12         intent.setClass(this, MySecondActivity.class);   
13         startActivity(intent);   
14     }   
15 }  
 1 public class MySecondActivity extends Activity {   
 2     private MyApplication app;   
 3     @Override  
 4     protected void onCreate(Bundle savedInstanceState) {   
 5         super.onCreate(savedInstanceState);   
 6         setContentView(R.layout.main);   
 7         app = (MyApplication) getApplication();  //获取应用程序   
 8         Log.e("MySecondActivity", app.getName()); //获取全局值   
 9     }           
10 } 

 

其实还有一种方式,用一个公共类,里面放静态变量和静态方法!但是推荐第一种,第一种更安全,更符合android的思想!

转载于:https://www.cnblogs.com/vtianyun/archive/2012/04/19/2457846.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值