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

android application类和全局数据使用

 
阅读更多

 我们在平时的开发中,有时候可能会需要一些全局数据,来让应用中的所有Activity和View都能访问到,大家在遇到这种情况时,可能首先会想到自己定义一个类,然后创建很多静态成员,不过android已经为我们提供了这种情况的解决方案,下面就来介绍一下:
 
     在Android中,有一个名为Application的类,我们可以在Activity中使用getApplication(),方法来获得,它是代表我们的应用程序的类,使用它可以获得当前应用的主题,资源文件中的内容等,这个类更灵活的一个特性就是可以被我们继承,来添加我们自己的全局属性。例如我们在开发一个游戏应用,需要保存分数,那么我们就可以继承Application,代码如下:

 

1 public class GameApplication extends Application {  

 2     private int score;   

 3       

 4     public int getScore() {   

 5         return score;   

 6     }   

 7     public void setScore(int score) {  

 8         this.score = score;   

 9     }  

 10 }

 
这样我们就扩展了自己的属性,不过还没有结束,另外一个比较关键的一步,是需要在androidManifest.xml文件中将我们扩展后的Application类指定上去,例如下面的代码:
 

 <application 
 android:name=".GameApplication"   
android:icon="@drawable/icon"   
android:label="@string/app_name"> 

 
这样指定好之后,我们的自定义Application就算完成了,然后我们可以很方便的在任何Activity和View中来获取我们的分数属性,代码如下:
 
在Activity中:
1 //设置分数   2 ((GameApplication)getApplication()).setScore(100)  3   4 //获取分数   5 ((GameApplication)getApplication()).getScore(); 
复制代码
在View中:
1 ((GameApplication)getContext().getApplicationContext()).getScore() 
 
注:
在使用这种方式的时候可能会遇到getApplication返回null的情况,有可能是调用getApplication的时机不对,如果是在类未定义完成的地方(比如变量定义部分),此时无法得到实例,所以就会出现空指针

分享到:
评论

相关推荐

    Android通过全局变量传递数据

    在Activity之间数据传递中还有一种比较实用的方式 就是全局对象 实用J2EE的读者来说都知道Java Web的四个作用域 这四个作用域从小到大分别是Page Request Session和Application 其中Application域在应用程序的任何...

    android Application全局传值替代Intent

    文档+代码,android Application全局传值替代Intent传值,解决了Intent传值的限制

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

    * 一些类里面初始化全局变量的化,会遇到一些空指针的异常,当然,我没有遇到过。 * 如果用此方法初始化的话,那么就可以避免那些有可能出现的错误。 * * 启动Application,他就会创建一个PID,就是进程ID,所有的...

    Android Realm+gridview gridviewItem点击更新保存数据

    AndroidStudio代码。在MyApplication建立全局realm数据库,gridviewItem点击更新数据,重载或重新进入App时显示最后更新的数据!

    Application代码演示

    在Android中全局保存数据的对象Application

    Android学习笔记–通过Application传递数据代码示例

    在Activity之间数据传递中有一种比较使用的方式,就是全局对象,使用过J2EE的都应该知道JavaWeb的四个作用域,其中Application域在应用程序的任何地方都可以使用和访问,除非是Web服务器停止,Android中的全局对象...

    Jamendo android开源在线音乐播放器

    3. 在代码中大量使用全局缓冲机制,如全局Application缓冲,图片缓冲等等。。 4. 数据传递使用JSON方式,网络传输(Apache Http 4.0)。。。 5. 全局的MediaService,并且伴有NotifyManager等进行通知 部分截图...

    数据存储和购物车设计

    storage工程演示了Android常用的几种数据存储方式,包括:共享参数SharedPreferences的键值对存取、数据库SQLite的关系型数据存取、SD卡的文件写入与读取操作(含文本文件读写和图片文件读写)、App全局内存的读写、...

    pro_android_cpp_with_the_ndk.pdf

    3.6 局部和全局引用 3.6.1 局部引用 3.6.2 全局引用 3.6.3 弱全局引用 3.7 线程 3.7.1 同步 3.7.2 原生线程 3.8 小结 第4章 使用SWIG自动生成JNI代码 4.1 什么是SWIG 4.2 安装 4.2.1 Windows平台上SWIG的安装 4.2.2...

    Android C++高级编程:使用NDK_Onur Cinar, 于红PDF电子书下载 带书签目录 完整版

    Android C++高级编程:使用NDK_Onur Cinar, 于红PDF电子书下载 带书签目录 完整版 原书名:Pro Android C++ with the NDK 原出版社: Apress 作者: (美)Onur Cinar 译者: 于红 佘建伟 冯艳红 丛书名: 移动开发...

    Android聊天项目D3Xmpp.zip

    懂android的都知道3.com.d3.d3xmpp.constant存放配置类,有三个:com.d3.d3xmpp.constant. Constants类是常用的配置com.d3.d3xmpp.constant. MyApplication类是全局Application,方便管理androidcom.d3.d3xmpp....

    android群雄传

    2.2 Android Studio高级使用技巧 19 2.2.1 更新SDK 20 2.2.2 Android Studio常用界面 21 2.2.3 导入Android Studio工程 23 2.3 ADB命令使用技巧 24 2.3.1 ADB基础 24 2.3.2 ADB常用命令 25 2.3.3 ADB命令来源...

    android悬浮窗源码,显示监视内容悬浮窗口

    摘要:Java源码,Android源码,悬浮窗 android悬浮窗的实现源码,可作为参考的一个例子,用于显示被... 在MyApplication类中:创建全局变量,全局变量一般都比较倾向于创建一个单独的数据类文件,并使用static静态变量。

    自定义统计SDKTcStatInterface.zip

    全局(AppAction)统计(用于统计app的唤醒、打开关闭频率、使用时长等)、页面访问统计(Page)和自定义事件统计(Event)。 统计SDK提供app的崩溃日志收集功能(统计SDK2.0 将会新增)。功能开启后,对于app在使用过程...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--Activity不允许横竖屏切换 |--Activity常用小技巧 |--Activity按返回直接回到桌面 |--aidl之结合反射获取应用缓存大小等...|--通信之Application实现应用全局通信 |--重启adb |--隐式转换 页面 |--震动效果的实现

    FastDev4Android

    后续会进行逐步添加整体项目目录如下:FastDev4Android包名描述libs 一些公共jar包库adapter适配器application全局applicationbase基类包cache数据缓存相关处理common公共类,或者配置相关db数据库操作相关event事件...

    LoadingLayoutDemo-加载中、无网络、无数据、出错4种状态的载入布局.zip

    使用方式gradle引用:compile 'com.lai.weavey:loadinglayout:1.2'使用说明LoadingLayout支持全局配置,对所有使用到的地方都起效,需要在Application中配置,如下: public class App extends Application { ...

    移动:分散,透明,可验证且匿名的投票应用程序

    模型类它们可以是以下类型: 单机种AppStateModel,AccountModel,EntityModel,ProcessModel,FeedModel 一个模型可以包含对其他模型的引用数据池通常,它们包含单个模型的集合通常用作全局变量他们的目标是跟踪...

Global site tag (gtag.js) - Google Analytics