Android全局变量值之ApplicationContext

本文详细介绍了如何在Android应用中使用全局变量,并通过实例展示了全局变量的定义、赋值、注册及获取过程,强调了全局变量的重要性及正确使用方法。

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

第一步:定义全局变量对象(类),继承至 android.app.Application ,代码如下:

import android.app.Application;

public class ApplicationHelper extends Application {
	    // 操作帐号   
	private  String  logicAccount="";
		// 操作密码    
	 private  String  logicPass="";
    public String getLogicAccount() {
		return logicAccount;
	}
	public void setLogicAccount(String logicAccount) {
		this.logicAccount = logicAccount;
	}
	public String getLogicPass() {
		return logicPass;
	}
	public void setLogicPass(String logicPass) {
		this.logicPass = logicPass;
	}

}


 


第二步:给全局变量赋值,代码如下:

	((ApplicationHelper)getApplicationContext()).setLogicAccount( name.getText().toString());
	((ApplicationHelper)getApplicationContext()).setLogicPass(pwd.getText().toString());


 


第三步:把全局变量类注册到 AndroidManifest.xml文件中去:

 

  <application       
  android:name=".ApplicationHelper"       
  android:icon="@drawable/ic_launcher"      
  android:label="@string/app_name"       
  android:theme="@style/AppTheme" >
  <!--应用程序的其他Activity注册内容-->    
  </application> 



第四步:获取全局变量值,代码如下:

 

String userAccount= ((ApplicationHelper)getApplicationContext()).getLogicAccount() ;
String userPass= ((ApplicationHelper)getApplicationContext()).getLogicPass();
System.out.println(userAccount);
System.out.println(userPass); 


 

注意问题:

1.无论是给全局变量赋值还是取值必须 使用 (ApplicationHelper)getApplicationContext() 对象,不可以使用  ApplicationHelper  aHelper=  (ApplicationHelper)getApplicationContext() , 因为 每 使用一次 ApplicationHelper  aHelper 就是新创建一个对象,每次都是新对象,变量的值就不能共享,也就失去全局变量存在意义。

2.把全局变量注册到AndroidManifest.xml 时应该注意,一定要把 全局变量对象类(ApplicationHelper)定义到要使用全局变量的应用(application)中,如果给全局变量赋值 和注册全局变量类不在同一个应用中,无法共享全局变量值。

3. Application全局变量取值时,最好在onCreate方法中去,不然会引发空指针异常问题(这部分为后期开发遇到问题,属性名称和方法名称和以前不一致,不过不影响大家学习)

错误代码:

private  String  estination_code=((ApplicationHelper)getApplicationContext()).getDestination_code();
private  String user_name=((ApplicationHelper)getApplicationContext()).getUser_name();


会引发空指针异常


正确代码:

private  String  estination_code="";
private  String  user_name="";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_challenge);
        estination_code=((ApplicationHelper)getApplicationContext()).getDestination_code();
        user_name=((ApplicationHelper)getApplicationContext()).getUser_name();

	}


 

 

### 如何在 Android 中切换到全局命名空间 在 Android 开发过程中,有时需要确保某些组件或资源能够在整个应用范围内被访问。为了实现这一点,可以采用特定的方法来设置和使用全局命名空间。 #### 设置 Application 类作为全局入口 通过创建自定义 `Application` 类并在此类中初始化全局状态,可以在整个应用程序生命周期内共享数据。这相当于为应用提供了一个全局作用域: ```java public class MyApplication extends Application { private static MyApplication instance; @Override public void onCreate() { super.onCreate(); instance = this; // 初始化全局变量或其他逻辑 } public static synchronized MyApplication getInstance() { return instance; } } ``` 需在 `AndroidManifest.xml` 文件内的 `<application>` 标签指定该自定义 `Application` 类[^2]: ```xml <application ... android:name=".MyApplication" ...> </application> ``` #### 使用 ContentProvider 实现跨进程通信 如果目标是在不同进程中共享数据,则可以通过 `ContentProvider` 来暴露接口给其他组件读取或写入数据。这种方式不仅限于同一应用内部,还可以跨越多个应用边界工作。 对于希望在整个设备上拥有更高权限的操作(如修改系统时间),则可能涉及到更复杂的配置,例如声明特殊的权限以及按照平台安全模型的要求进行签名验证[^3]。 #### 定义公共常量与工具方法 将常用的字符串、整数等类型的常量放在单独的 Java/Kotlin 文件里供各处调用;同样地,把一些通用的功能函数提取出来形成工具库的形式也很有必要。这样做有助于减少重复代码的同时提高可维护性。 ```kotlin object Constants { const val APP_NAME = "GlobalApp" } fun getGlobalContext(): Context { return MyApplication.getInstance().applicationContext } ``` 以上措施共同构成了所谓的“全局命名空间”,使得开发者能够更加灵活高效地管理和利用程序内外部的各种资源和服务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值