如想在整个应用中使用,在java中一般是使用静态变量,而在android中有个更优雅的方式是使用Application context
每个Activity 都是Context,其包含了其运行时的一些状态,android保证了其是single instance的。
方法是创建一个属于你自己的android.app.Application的子类,然后在manifest中申明一下这个类,这是android就为此建立一个全局可用的实例,你可以在其他任何地方使用Context.getApplicationContext()方法获取这个实例,进而获取其中的状态(变量)。
这个效果就是使用静态变量是一样的,但是其更符合android的架构体系。
class MyApp extends Application {
private String myState;
public String getState(){
return myState;
}
public void setState(String s){
myState = s;
}
}
class Blah extends Activity {
@Override
public void onCreate(Bundle b){
...
MyApp appState = ((MyApp)getApplicationContext());
String state = appState.getState();
...
}
}
然后再manifest中添加应用:
<application android:name=".MyApp" android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".ClickableListItemActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
说明:
(1)Application对象只有在应用程序中所有Activity都destroy时才会destrory,所有我们可以在任何一个Activity中访问它;
(2)为什么我们不能使用static 变量来存放全局变量呢?
public class DataStoreClass {
private static int globalVariable=1;
public static int getGlobalVariable() {
return globalVariable;
}
public static void setGlobalVariable(int newGlobalVariable) {
globalVariable = newGlobalVariable;
}
}
通过这种方式,DataStoreClass类可能会像Activity一样在某些时候被android系统强行销毁。所以在应用程序运行期间,DataStoreClass的值可能会丢失,或得到一些您不想要的值。
分享到:
相关推荐
全局变量的使用有其优点,如共享数据和简化代码,但也存在一些潜在的问题,如数据安全和命名冲突。以下是对标题和描述中所述知识点的详细解释: 首先,让我们看看示例代码中如何在类中使用全局变量。在这个例子中,...
现在,`Temp::x`可以作为一个全局变量使用,通过`Temp::x`来访问它。 ### 考虑因素和最佳实践 1. **封装**:尽量避免全局变量,因为它们可以使代码的依赖关系变得模糊,导致难以理解和维护。 2. **内存管理**:...
### 在C/C++项目中使用全局变量的方法 #### 概述 在开发C/C++项目时,有时需要在多个源文件之间共享数据或状态信息。全局变量作为一种简单且直观的数据共享方式,在某些场景下非常实用。然而,不当的使用全局变量...
- 如果必须使用全局变量,考虑使用静态全局变量(仅在当前文件可见),以限制其作用域。 总之,虽然全局变量在某些情况下提供了一定的便利性,但应谨慎使用,以免引入潜在的问题。在编写C语言程序时,优先考虑使用...
flask中jinja2使用全局变量
当时想到的就是使用全局变量,在 app.js 中定义好全局变量,点击组件页面时就修改全局变量的值,父页面同样使用全局变量的值,这样一来就可以动态打开/关闭弹出层且传递值了。 下面先看看 app.js 中怎么定义的: ...
Android用Application设置全局变量以及使用 如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型;而在android中如果使用这样的全局变量就不符合Android的框架架构,但是可以使用一种更优雅...
1. 定义全局变量:在易语言中,可以使用“定义”关键字来声明全局变量,如“定义 整数型 全局变量A”,这会在程序开始时自动分配内存空间并初始化为默认值。 2. 使用全局变量:在程序的任何地方,只要正确引用全局...
下面将详细解释如何在VB中定义和使用全局变量,并给出一些实际的例子。 首先,我们来了解如何声明全局变量。在VB中,全局变量通常在标准模块(Module)的顶部声明,这样它们就可以在程序的任何地方被访问。声明全局...
精彩编程与编程技巧-避免使用全局变量 ...
以下是一个简单的例子,展示了如何使用全局变量和`CSingleLock`进行线程间通信: ```cpp // 全局变量 CRITICAL_SECTION g_cs; int g_sharedData; // 初始化临界区 void InitCriticalSection() { ...
全局变量在VC++编程中是一种常见但需谨慎使用的数据存储方式。它们可以在程序的不同函数或模块之间共享,不受函数调用的影响,具有全局可见性。然而,过度依赖全局变量可能会导致代码可读性下降、调试困难以及潜在的...
本篇将详细介绍LabVIEW功能性全局变量的使用方法及其优势。 1. **全局变量的概念** 全局变量是一种在程序的不同部分都能访问的变量,与局部变量相比,它们在整个程序的生命周期内保持其值。在LabVIEW中,全局变量...
`Global Variable.vi`可能展示了如何在多个VI之间创建和使用全局变量,以及如何管理全局变量的生命周期和数据流。 **课后练习.docx 和 局部变量与全局变量.pdf** `课后练习.docx`可能是配套的练习题目,旨在帮助...
使用全局变量带来的问题
在VC++ 6.0中,MFC(Microsoft Foundation Classes)库提供了丰富的对话框和控件支持,使得全局变量的使用更加灵活。 首先,我们来看第一个实例:定义全局指针。在MFC中,对话框通常由CDialog类的派生类表示,而...
在MFC(Microsoft Foundation Classes)框架中,全局变量和函数的使用与标准C++有所不同,因为MFC工程通常由多个文件组成,需要一种方法来在这些文件之间共享数据和功能。这里将介绍两种在MFC工程中定义全局变量和...
- **作用域冲突**:全局变量可能会导致命名冲突,尤其是在大型项目中,多个模块可能无意间使用相同的全局变量名称,从而引发错误。 - **内存消耗**:全局变量在整个程序生命周期内都存在,会占用内存资源,因此不...