Android ---Application 开发易做图享全局数据
android 开发易做图享全局数据 我们在平时的开发中,有时候可能会需要一些全局数据,来让应用中的所有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类指定上去,例如下面的代码:
1 <application
2 android:name=".GameApplication"
3 android:icon="@drawable/icon"
4 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的时机不对,如果是在类未定义完成的地方(比如变量定义部分),此时无法得到实例,所以就会出现空指针.
Appliction一些属性:
<application> <application android:allowClearUserData=["true" | "false"] android:allowTaskReparenting=["true" | "false"] android:backupAgent="string" android:debuggable=["true" | "false"] android:description="string resource" android:enabled=["true" | "false"] android:hasCode=["true" | "false"] android:icon="drawable resource" android:killAfterRestore=["true" | "false"] android:label="string resource" android:manageSpaceActivity="string" android:name="string" android:permission="string" android:persistent=["true" | "false"] android:process="string" android:restoreAnyVersion=["true" | "false"] android:taskAffinity="string" android:theme="resource or theme" > . . . </application>
包含在:<manifest>元素下
可以包含:
<activity>
<activity-alias>
<service>
<receiver>
<provider>
<uses-library>
描述:
应用的声明。这个元素包含了子元素,这些子元素声明了应用的组件,元素的属性将会影响应用下的所有组件。很多属性为组件设置了默认
值。有些属性设置了全局值并且不能被组件修改。
属性:
1、android:allowClearUserData
是否给以用户删除用户数据的权限,如果为true应用管理者就拥有清除数据的权限;false没有。默认为true。
2、android:allowTaskReparenting
应用定义的activities是否可以被从启动的任务转移到和他有相同并且将被带到前台的任务。true他们可以被转移,如果为false,
他们必须和启动他们的任务保持在一起。默认为false。
3、android:backupAgent
实现应用的备份代理的类名,BackupAgent的子类。这个属性的名称因该是全限定类名(如,"com.example.project.MyBackupAgent")。
但是,如果名称的首字母被设置为点号,也可以为类名(如,".MyBackupAgent"),他将被追加到在<manifest>元素中定义的包名后。
没有默认值。
4、android:debuggable
应用是否可以使用debug,甚至运行在用户模式下。true可以,false不能。默认为false。
5、android:description
用户可读的,比应用标签更长、更多的应用描述。此值必须是一个引用字符串。不像标签,他不能被设置为硬编码字符串。没有默认值。
6、android:enabled
Android系统是否可以实例化应用的组件。如果为true可以,如果为false不可以。如果为true时,每个组件的enabled属性决定了此组件
是否可用。如果为false,他重写了组件指定值,所有的组件将不还用。默认为true。
7、android:hasCode
应用是否包含代码。true表示包含,false表示不包含。当值为false时,在启动组件是系统不会试着加载应用的任何代码。默认为true。
8、android:icon
整个应用的图标,还是每个组件的默认图标。这个属性值必须被设置为drawable资源的引用。没有默认值。
9、android:killAfterRestore
在整型系统重置操作中,当他的设置被重置后,应用是否应该被终止。单个包的重置操作不会引起应用被关闭。整个系统的恢复操作仅代表
性的发生一次,当电话第一次被设置时。第三方应用将不会经常使用此属性。
默认值为true,意思是,当整个系统被恢复时,应用运行玩他的数据后,将会终止。
10、android:label
一个易读的应用标签,并且还是应用的每个组件的默认标签。这个标签应该被设置为引用字符串资源,当然他也可以像其他字符串一样在用户
接口中指定。但是为了方便,在应用开发时,可以被设置未定义字符串。
11、android:manageSpaceActivity
一个Activity子类的全限定名称,这个Activity可以被系统启动让用户管理此应用占有的存储空间。这个Activity也应该用<activity>元素声明。
12、android:name
为这个应用实现的Application子类
补充:移动开发 , Android ,
上一个:x易做图全媒体手机报
下一个:android中截图功能