`
rayloo
  • 浏览: 85001 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

android 如何定义全局变量

阅读更多

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

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()方法获取这个实例,进而获取其中的状态(变量)。

给个例子:

Java code
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> classMyAppextendsApplication{ privateStringmyState; publicStringgetState(){ returnmyState; } publicvoidsetState(Strings){ myState=s; } } classBlahextendsActivity{ @Override publicvoidonCreate(Bundleb){ ... MyAppappState=((MyApp)getApplicationContext()); Stringstate=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的架构体系。

分享到:
评论

相关推荐

    android 全局变量使用

    android 全局变量的定义使用

    Android中用Application类实现全局变量

    Android中用Application类实现全局变量

    Android全局变量和Context

    Android全局变量和Context的实现方法

    Android通过全局变量传递数据

    2 在AndroidMainfest xml中加入全局变量 android:name &quot; MyApp&quot; 3 在传数据类中获取全局变量Application对象并设置数据 myApp MyApp getApplication ; myApp setName &quot;jack&quot; ; 修改之后的...

    详解Android中Application设置全局变量以及传值

    主要介绍了详解Android中Application设置全局变量以及传值的相关资料,希望通过本文大家能够理解掌握这部分内容,需要的朋友可以参考下

    android jni使用static变量

    这是我自己写的android jni调用java static属性的例子

    Android中的全局变量与局部变量使用小结

    至于本人则是经常定义全局变量使用,但也就是因为这样,定义的是全局变量。也饶了不少的弯子。 在使用Adapter即适配器的时候,通常适配器总是与listView使用,因为一个listView 基本上都会有一个listView的Item的...

    android系统中几种系统级别的全局变量

    android系统中几种系统级别的全局变量 在android 开发中时,尤其是在开发调试系统应用的时候,有时候需要设置一个系统级别的flag标志位,来提供给几个应用使用判断。例如开机完成后,或者走完开机导航后,都需要设置...

    浅谈Android中关于静态变量(static)的使用问题

    项目中,在不停地接收串口数据很长一段时间(几小时)后,会偶然性的...在Android中,用的DVM也是一样的,不过Android中不太突出进程的概念,所以对静态变量的生命周期就是感觉模糊,这种模糊对于值类型是无所谓的,如

    vue 如何添加全局函数或全局变量以及单页面的title设置总结

    首先在index.html中定义一个全局的函数: var setTitle = function (title) { var u = navigator.userAgent var isAndroid = u.indexOf('Android') &gt; -1 || u.indexOf('Linux') &gt; -1 var isiOS = !!u.match

    Modularization-master.zip

    android组件化开发demo。通过定义全局变量IsBuildSignle实现android组件化开发功能,代码已剔除成最简

    配置vim方便读取android反编译的smali文件

    54 :set foldmethod expr #定义折叠方式为自定义表达式 55 :set foldexpr getline v:lnum [0] &quot; &quot;&amp;&amp;getline v:lnum [1] &quot;m &quot;&amp;&amp;getline v:lnum [2] &quot;e &quot;&amp;&amp;...

    StringFormat的使用(扩展:网络地址)

    StringFormat的使用 扩展: 定义全局变量:网络地址

    用handler在两个activity之间传递数据

    资源包括如何在一个activity A里激活另一个activity B。 然后在两个activity之间用handler传输数据。在activity A里定义全局变量handler,用sendMessage来发数据,在handler里数据以消息队列的方式发送。

    精通ANDROID 3(中文版)1/2

    23.1.1 探索Android全局搜索  23.1.2 为全局搜索启用建议提供程序  23.2 活动与搜索键交互  23.2.1 常规活动上的搜索键行为  23.2.2 禁用了搜索的活动的行为  23.2.3 通过菜单显式调用搜索  23.2.4 ...

    Android.mk

    因为所有的编译文件都在同一个 GNU MAKE 执行环境中进行执行,而Android.mk中所有的变量都是全局的。因此,您应尽量少声明变量,不要认为某些变量在解析过程中不会被定义

    我总结的Android编程规范 - 薰衣草的旋律 - 博客园1

    * 局部变量、类的成员变量、类的成员函数、函数参数:以小写字母开头其他的单词首字母大写,变量名不建议使用下划线分隔单词,建议使用驼峰命名法,Android 的系统类都采用此方法。 * 静态常量:全部大写,单词之间...

    Android程序优化总结

    尽量使用标准库函数和公共函数不要随意定义全局变量,尽量使用局部变量。使用括号可以避免二意性可读性第一,效率第二源程序文件,都有文件头说明每个函数,都有函数头说明常量定义和变量定义和引用时,要添加注释...

Global site tag (gtag.js) - Google Analytics