`
gty509
  • 浏览: 55605 次
  • 性别: Icon_minigender_1
  • 来自: Bangkok
文章分类
社区版块
存档分类
最新评论

如何定义全局变量

阅读更多
woa,找到一个和我有类似需求的问题,其下给出了不错的解决方案,也正是我之前想到的,这种方法貌似很方便。

The more general problem you are encountering is how to save stateacross several Activities and all parts of your application. A staticvariable (for instance, a singleton) is a common Java way of achievingthis. I have found however, that a more elegant way in Android is toassociate your state with the Application context.

--如想在整个应用中使用,在java中一般是使用静态变量,而在android中有个更优雅的方式是使用Application context。

As you know, each Activity is also a Context, which is informationabout its execution environment in the broadest sense. Your applicationalso has a context, and Android guarantees that it will exist as asingle instance across your application.
--每个Activity 都是Context,其包含了其运行时的一些状态,android保证了其是single instance的。

The way to do this is to create your own subclass of android.app.Application,and then specify that class in the application tag in your manifest.Now Android will automatically create an instance of that class andmake it available for your entire application. You can access it fromany context using the Context.getApplicationContext() method (Activityalso provides a method getApplication() which has the exact sameeffect):
--方法是创建一个属于你自己的android.app.Application的子类,然后在manifest中申明一下这个类,这是android就为此建立一个全局可用的实例,你可以在其他任何地方使用Context.getApplicationContext()方法获取这个实例,进而获取其中的状态(变量)。

给个例子:
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();
    ...
  }
}


This has essentially the same effect as using a static variable orsingleton, but integrates quite well into the existing Androidframework. Note that this will not work across processes (should yourapp be one of the rare ones that has multiple processes).
--这个效果就是使用静态变量是一样的,但是其更符合android的架构体系。

原文链接:http://stackoverflow.com/questions/708012/android-how-to-declare-global-variables
分享到:
评论
3 楼 kevincomo 2009-12-28  
这个解决方案感觉牛逼!
2 楼 yzhong_sa 2009-12-27  
第一次看到这样的想法,挺不错  我们的做法是是写一个接口 里面只存静态变量,但是估计这种方法所占栈内存空间不小。以后考虑用一下你们的方式。
1 楼 babylon3389 2009-12-21  
这个方法的思路不错

相关推荐

    定义全局变量 变量 全局

    这里将介绍两种在MFC工程中定义全局变量和全局函数的方法。 方法一:在应用程序类中定义 在MFC中,每个工程都有一个派生自CWinApp的类,例如CxxxApp。你可以将需要全局访问的变量和函数作为此类的成员变量和成员...

    VC中如何定义全局变量VC中如何定义全局变量VC中如何定义全局变量VC中如何定义全局变量VC中如何定义全局变量

    VC中如何定义全局变量VC中如何定义全局变量VC中如何定义全局变量VC中如何定义全局变量VC中如何定义全局变量VC中如何定义全局变量VC中如何定义全局变量VC中如何定义全局变量VC中如何定义全局变量VC中如何定义全局变量...

    浅谈在vue项目中如何定义全局变量和全局函数

    本篇文章主要介绍了浅谈在vue项目中如何定义全局变量和全局函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    在MFC下如何定义全局变量和全局函数

    在MFC(Microsoft Foundation Classes)框架下开发应用时,全局变量和全局函数的定义与普通C++项目有所不同,因为MFC项目的结构更为复杂,通常由多个文件构成,直接在类外部定义全局变量可能会导致编译错误或者链接...

    MFC中定义全局变量和全局函数的方法

    ### MFC中定义全局变量和全局函数的方法 #### 引言 在Microsoft Foundation Classes (MFC)框架下进行软件开发时,经常会遇到需要在不同类之间共享数据或功能的情况。由于MFC项目的复杂性,简单地定义全局变量或函数...

    在MFC下如何定义全局变量和全局函数.doc

    ### 在MFC下如何定义全局变量和全局函数 #### 一、引言 在MFC(Microsoft Foundation Classes)编程中,全局变量和全局函数是非常有用的工具,它们可以在整个程序的不同部分被访问和调用,从而简化了代码结构,提高...

    AppDelegate中定义全局变量

    在AppDelegate类中轻松定义全局变量,几乎和C语言一样来定义。

    详解VUE 定义全局变量的几种实现方式

    本文将详细解析Vue定义全局变量的三种主要实现方式。 1. **全局变量专用模块** 这种方法是通过创建一个特定的模块(如`Global.vue`)来组织和管理全局变量。在这个模块中,你可以声明并初始化你的全局变量,例如`...

    Vue中定义全局变量与常量的各种方式详解

    本文主要跟大家介绍了关于Vue定义全局变量与常量的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 我想要定义一个变量, 在项目的任何地方都可以访问到, 不需要每一次使用的时候, 都引入...

    QT 使用全局变量的方法 - 郭小郭的专栏 - CSDN博客1

    在这个例子中,`var_name`是一个全局变量,`extern`关键字告诉编译器它在其他地方被定义。 ### 方法二:创建类来存储全局变量和函数(使用`static`关键字) 这是更推荐的方法,因为它允许更好的封装和管理。下面是...

    C/C++语言中全局变量重复定义问题的解决方法

    在C语言中使用extern 关键字来定义全局变量的时候,我们需要在.h文件和.c文件中重复定义,这种重复,导致了出错几率的增加。 今天,在整理自己的代码的时候,考虑到我写的代码从一至终都是在一个cpp文件里面。于是,...

    spring boot 和 freemaker 全局变量

    Spring MVC配置Freemarker全局变量,实现应用全路径

    全局 变量 extern

    不能在头文件.h里面定义全局变量,如果头文件中可以定义全局变量,那么每个包含该头文件的文件里都会有该全局变量的定义.因为C语言的include是直接将文件嵌入到include这个地方的. ...

    在vue中多次调用同一个定义全局变量的实例

    今天小编就为大家分享一篇在vue中多次调用同一个定义全局变量的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    局部变量和全局变量总汇

    这意味着,全局变量可以在程序中的任何地方被访问和修改,除非特定区域中定义了同名的局部变量,这种情况下局部变量会覆盖全局变量。 #### 二、局部变量与全局变量的特性及应用 1. **局部变量能否和全局变量重名?...

    易语言源码易语言汇编设置全局变量源码.rar

    1. 定义全局变量:在易语言中,可以使用“定义”关键字来声明全局变量,如“定义 整数型 全局变量A”,这会在程序开始时自动分配内存空间并初始化为默认值。 2. 使用全局变量:在程序的任何地方,只要正确引用全局...

Global site tag (gtag.js) - Google Analytics