我们大家都知道在平时的开发中,有时候可能会需要一些全局数据,来让应用中的所有ActivityView都能访问到,大家在遇到这种情况时,可能首先会想到自己定义一个类,然后创建很多静态成员,这个方法是我们常用的一个方法,不过android的平台已经为我们提供了这种情况的解决方案,下面就来介绍一下:

Android中,有一个名为Application的类,我们可以在Activity中使用getApplication()这个类,方法来获得,它是代表我们的应用程序的类,使用它可以获得当前应用的主题,资源文件中的内容等,这个类更灵活的一个特性就是可以被我们继承,来添加我们自己的全局属性。例如我们在开发一个游戏应用,需要保存分数,那么我们就可以继承Application,代码如下:

Java代码:
  1. public class GameApplication extends Application {
  2. private int score;
  3. public int getScore() {
  4. return score;
  5. }
  6. public void setScore(int score) {
  7. this.score = score;
  8. }
  9. }
复制代码 我们上面的代码中主要的就是那个返回值,这个一定要定义好,也要写好是返回哪个值,这样才行那,如果写错的话,我们就不能共享全局数据了,这样我们也就白忙了一场,这个在模拟器上运行的时候也不会报错的,所以大家要细心一些。

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

Java代码:

  1. <application
  2. android:name=".GameApplication"
  3. android:icon="@drawable/icon"
  4. android:label="@string/app_name">
复制代码 大家要记住了,我们到这步是非常的重要,如果把这步给省略的话,那我们什么效果也显示不出来,有时候也不会报错,这样我们就没法再往下继续自己的开发的工作了。大家千万不要忽略这一步,在编写完代码时,运行没有出现效果图的话,一般都是在androidManifest.xml没有定义好。

这样指定好之后,我们的自定义Application就算完成了,然后我们可以很方便的在任何ActivityView中来获取我们的分数属性,代码如下:

Java代码:
  1. //设置分数
  2. ((GameApplication)getApplication()).setScore(100)
  3. //获取分数
  4. ((GameApplication)getApplication()).getScore();
复制代码
Java代码:
  1. ((GameApplication)getContext().getApplicationContext()).getScore()
复制代码
上面的两段代码,前一个是在activity里写的,后一个是在view里写的。

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Mac Android(安卓)studio NDK 开发
  3. android 下载文件(多任务,断点下载.....)
  4. 供大家学习的Android开源项目
  5. 从零开始--系统深入学习android(实践-让我们开始写代码-Android框
  6. Android一键加群实现
  7. android Ndk学习笔记01之Hello World!
  8. Android(安卓)中的 framebuffer
  9. Android再按一次完全退出程序及禁止返回上一个界面等

随机推荐

  1. javascript中的闭包,访问器属性与类的创
  2. JS流程控制和模板字面量及模板函数的学习
  3. sai线稿怎么上色?线稿上色技巧
  4. Zabbix安装部署
  5. 闭包,访问器属性,对象的创建,数组和对象的构
  6. 流程控制的分支、循环,函数的参数与返回—
  7. 云虚拟主机FTP连接不上的解决办法
  8. 轻松搞定iOS本地消息推送
  9. iOS点击推送消息跳转处理
  10. iOS 12适配以及问题小记