前阵子参加了Google Android开发大赛,在我们组的程序中需要使用一个全局变量,这个变量主要用于存储通过I/O读入的xml文件流,通过kxml2解析器进行dom解析,为了不用每次查询该xml文件(因为i/o操作的代价比较大),所以使用全局InputStream来存储,但是因为是在Android平台上进行操作,所以与在PC上的操作方法有所不同,当时采用的方法如下:
1.首先将xml文件放在Android系统的asset文件夹下
2.在程序启动的Activity中,在onCreate中插入读取xml数据流,然后将这个流InputStream传给存储全局变量的类XmlTool中的静态方法setValue(InputStream is)
XmlTool的构造如下:
XmlTool{
public static KXml2 kxml2;
public static void setValue(InputStream is){
if(kxml2=null)
kxml2 = new KXml2(is);
}
}
在XmlTool中通过KXml2的构造函数public KXml2(InputStream is)去设置用于解析的parser,doc和root,这样问题就解决了,当时多亏了Jake和队友的帮助,因为已经是提交的前一天了,所以挺着急的的当时。
后来在网上看了另一种方法,将自己的理解写出来:
public class MyApp extends Application {
private Integer[] state;
public Integer[] getState() {
return state;
}
public void setState(Integer[] state) {
this.state = state;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
setState(we);
}//一定要在onCreate方法里给变量赋值
public Integer[] we=new Integer[]{
R.drawable.b_0,R.drawable.b_1,R.drawable.b_2,
R.drawable.b_3,R.drawable.b_4,R.drawable.b_5
};
}
在所需要的activity中使用
MyApp appState = (MyApp)getApplicationContext();
Integer[] we = appState.getState();
来获取,最后一步别忘了在manifest中的application标签中添加 android:name=".MyApp"(这儿不是新建<application></application>),注意这里继承的是Application,当时我也想过用一个Activity来实现,但是jake的建议是如果是Activity那么最好在前台显示,这个显然不太合理,而这里使用Application不会有这个问题,同样我们可以在onCreate的时候将I/O操作加进去,然后使用一个非static的KXml2的对象进行xml文件的解析,这里不会每次创建,因为是交由系统注入的,有点类似于Spring的思想,因此也能解决这个问题。
分享到:
相关推荐
使用`Application`类来实现全局变量是一种非常简便的方法,尤其适合那些需要在整个应用程序范围内共享的数据。这种方式避免了频繁地读写文件或数据库,提高了程序的效率。当然,在实际开发过程中,还需要根据具体的...
在Android开发中,全局变量的使用是相当普遍的,它们可以跨多个活动(Activities)或整个应用程序保持数据的持久性。本教程将基于Eclipse V4.2.0这一版本的集成开发环境(IDE),深入讲解如何在Android项目中创建和...
在Android应用开发中,"Android-Application被回收引发空指针异常分析(消灭全局变量)"是一个常见的问题,尤其对于新手开发者来说,可能会遇到这样的困惑。这篇文章主要探讨了当Application对象被系统回收后,如何...
在Android开发中,全局变量的使用常常是为了在不同的Activity之间共享数据。`Application`类是Android框架提供的一种机制,允许开发者创建一个与应用程序生命周期绑定的单例对象,从而实现全局变量的效果。本篇文章...
在Android开发中,理解并恰当使用全局变量和局部变量是非常重要的。全局变量和局部变量是程序设计中的基本概念,它们各自有不同的作用域和生命周期,因此在编写代码时需要根据需求来选择合适的变量类型。 全局变量...
2 在AndroidMainfest xml中加入全局变量 android:name " MyApp" 3 在传数据类中获取全局变量Application对象并设置数据 myApp MyApp getApplication ; myApp setName "jack" ; 修改之后的...
总的来说,Android编程中的全局变量使用需要结合应用的生命周期和数据持久化需求来选择合适的方法。静态类和`Application`子类都是可行的解决方案,但使用`Intent`进行Activity间的数据传递更为安全。理解Android的...
本教程将深入探讨如何在Android JNI中使用静态(static)变量,以实现Java层与原生代码之间的数据共享。 首先,了解JNI的基本概念是必要的。JNI为Java应用程序提供了一个接口,可以调用本地方法(即非Java代码),...
在使用全局变量时,开发者应遵循一些最佳实践,比如限制其使用,尽可能地封装数据,使用静态类或单例模式来管理全局状态,以及利用Android的组件生命周期来控制全局变量的生命周期。同时,理解ProGuard和Android的...
在Android开发中,全局变量和跨活动(Activity)传值是常见的需求,特别是在需要在整个应用程序范围内共享数据时。本文将详细解析如何利用`Application`类来实现这一目标。 `Application`类是Android系统中的一个...
本项目是关于uniApp如何与colorUI、uView组件库以及Vuex进行集成,实现高效且统一的全局变量管理。 【colorUI】: ColorUI 是一款轻量级的前端 UI 组件库,专为 uni-app 设计。它提供了丰富的预设样式和组件,如...
在Android开发中,静态变量(`static`)的使用是一个重要的议题,因为它涉及到应用程序的内存管理、生命周期以及可能引发的问题。下面将详细讨论以下几个方面: 1. **静态变量的生命周期**: - 静态变量在类被加载...
开发者可以创建自定义的`Application`子类,并在其中存储全局变量,以达到在应用程序的各个组件之间共享数据的目的。这种方式的优点在于,一旦数据在`Application`中设置,所有组件都能访问,而无需每次都通过Intent...
在Android开发中,Android Studio是首选的集成开发环境(IDE),它提供了许多强大的工具和功能,使得开发者可以更高效地构建应用程序。在这个场景中,我们关注的是`AndroidViewModel`类和视图绑定(View Binding)这...
在Android开发中,全局实例通常指的是在整个应用程序生命周期中都存在的对象,可以被多个Activity、Service或其他组件共享。这种设计模式有助于减少数据重复加载和提高代码的可维护性。本篇文章将详细讲解如何在...
关于全局变量,Android提供了一个名为Application的类,它是所有Activity的顶级容器。开发者可以继承Application类,添加自定义的全局属性。这样,这些属性在整个应用程序的生命周期内都是可见的,可以被任何...
在Android开发中,`getApplication()`方法是经常被使用的,它主要用以获取应用程序上下文(ApplicationContext)。这个上下文对象在很多场景下都是至关重要的,比如初始化全局变量、启动服务、发送广播、创建自定义...
在这个特定的项目"Android程序研发源码Android 使用opengl写动态壁纸的类库.zip"中,我们可以看到一个利用OpenGL ES来构建动态壁纸的实例。动态壁纸为用户提供了一种更具交互性和视觉吸引力的手机桌面体验。 首先,...