文档章节

android中的全局变量定义与使用

zchuanzhao
 zchuanzhao
发布于 2015/09/29 23:12
字数 591
阅读 34
收藏 0
android中的全局变量定义与使用   在平时的开发过程中,有时候可能会需要一些全局数据,来让应用中的所有Activity和View都能访问到, 大家在遇到这种情况时,可能首先会想到自己定义一个类,然后创建很多静态成员, android已经为我们提供了这种情况的解决方案:   在Android中,有一个Application类,在Activity中可以使用getApplication()方法获得实例, 使用它就可以获得当前应用的主题、资源文件中的内容等,这个类更灵活的一个特性就是可以被继承, 来添加自己的全局属性.例如开发一个游戏,需要保存分数,那么我们就可以继承Application, 下面是个demo,用的是http://www.eoeandroid.com/thread-30257-1-1.html上面的代码, 其实上面那段话也是对它的修改.   首先,先写个Application的子类:   import android.app.Application; public class GameApplication extends Application { private int score; public int getScore() { return score; } public void setScore(int score) { this.score = score; } }   然后在manifest.xml文件里面修改: <application android:name=".GameApplication" android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".DemoActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="ResultActivity"></activity> </application>   注意到添加了android:name=".GameApplication" .   修改完了以后,再往下看:   public class DemoActivity extends Activity { public Button button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button=(Button)findViewById(R.id.button); ((GameApplication)getApplication()).setScore(100); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent intent=new Intent(); intent.setClass(DemoActivity.this, ResultActivity.class); startActivity(intent); } }); } }   在这个activity里面设置了分数,我们可以在别的activity里面取出来: public class ResultActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.other); TextView tv=(TextView)findViewById(R.id.tv); int score=((GameApplication)getApplicationContext()).getScore(); tv.setText("你的成绩是:"+score); } }   这只是个简单的例子,当然,想要完成以上功能,使用intent传值也是可以的,而我们这样还显得麻烦; 但是,如果有很多activity,使用这种方法就会发现很有用, 是不是使用sharepreference也可以完成类似功能呢?回答是肯定的;但是效率方面就要比这个差很多了, sharepreference主要是用来存储数据,你可以退出程序时把所需要保存的简单数据保存到sharepreference里面, 当然复杂的数据,还得使用sqllite.  

© 著作权归作者所有

共有 人打赏支持
zchuanzhao
粉丝 50
博文 242
码字总数 145449
作品 1
福州
程序员
私信 提问
在android.app.Application中定义全局变量

在android.app.Application中定义全局变量 在Android应用中使用全局变量,除了public的静态变量,还有更优雅的方式是使用android.app.Application。 启动Application时,系统会创建一个PID,...

jxlgzwh
2013/07/15
0
0
[Android记录]自定义ADT模板

简介 ADT模板就是在Eclipse中使用向导新建Android工程或者Android组件的时候使用的模板。ADT模板的特点: 1.可以通过简单的可视化配置[后面称之为UI parameters]来生成Android代码和资源样本...

xesam
2013/07/11
0
7
Android高级Renderscript---Andvanced Renderscript(一)

本文译自:http://developer.android.com/guide/topics/renderscript/advanced.html 因为利用Renderscript的应用程序依然运行在Android虚拟机(VM)内部,所以能够访问所有你熟悉的框架API,...

长平狐
2012/10/16
197
0
Android NDK :在 C语言代码中输出Log

Android NDK :在 C语言代码中输出Log 本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2012-07/66106.htmAndroid NDK 开发时,想要在 .c 文件中打...

zhangyujsj
2014/03/16
0
0
Android应用程序级全局变量Application

在Android中,我们可以通过继承Application类来实现应用程序级的全局变量,这种全局变量方法相对静态类更有保障,直到应用的所有Activity全部被destory掉之后才会被释放掉。 我们可以在Activ...

stefanliao
2012/05/29
0
1

没有更多内容

加载失败,请刷新页面

加载更多

Go Timer实现原理剖析

简介 快速使用 操作介绍

恋恋美食
1分钟前
0
0
记录一个奇怪的问题

环境:jdk1.8虚拟机参数:-verbose:gc -XX:+PrintGCDetails -Xmx20m -Xms20m -Xmn10m -XX:SurvivorRatio=8  -XX:+HeapDumpOnOutOfMemoryError 可以看出,eden占8M却放不下6M数据,发生了......

暗中观察
29分钟前
0
0
创建多个git账号

实习开发中我们可能一个机子上配置多个git账号,如github.com,oschina.com 或者工作账号,私人账号,这时候就2个账号用一个key,肯定会冲突,有一个会提示没权限(账号和密码对应不上) ssh ...

echojson
31分钟前
1
0
rabbitmq安装教程

RabbitMQ有Windows与Linux版本的,这里先写Windows版本的安装。 以前安装软件总是在百度上找某某安装教程,结果能按照教程安装好的软件真的不多。想起先前以为大牛说的一句话,去官网按照官网...

em_aaron
今天
7
0
Android 贝塞尔曲线实践——波浪式运动

一、波浪效果如下 贝塞尔曲线自定义波浪效果的案例很多,同样方法也很简单,大多数和本案例一样使用二次贝塞尔曲线实现,同样还有一种是PathMeasure的方式,这里我们后续补充,先来看贝塞尔曲...

IamOkay
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部