在多个Activity之间共享变量
????? 话说以前做的一个纯Java引擎准备移植到Android上面,前期已做过Demo,看起来一切都没有什么问题。不过,现在真正移植问题就来了。
????? 第一个问题就是,以前的Demo只是一个画面,引擎初期化是放在Activity的onCreate方法里面,这样做当然没有什么问题啦。现在画面增加到10来个,这个引擎如何为各个Activity公用成为了一个问题。
????? 对Android不熟悉,也只算是边学边做,所以有了下面的想法:
????? 1、用Service
????? 2、用Thread
????? 3、用Application
?
???? 现在用了第3种方法成功了。
??? 第1、2中方法我想本质上都是启动一个独立于Activity的线程,但是无法和Activity挂上关系。所以肯定是NullPointException啦。
?
??? 具体做法:
??? 很简单,引擎(或者某个普通的类)需要初始化,而且在应用程序不被销毁之前报保证被各个Activity可用。
??? 1、自定义一个类MyApplication来继承Application,在这个类中的onCreate方法里面初始化引擎。
??? 2、为了在各个Activity类中可以调用引擎,需要在1的自定义类中写一个getEngine的方法。
?
class MyApplication extends Application { private Engine engine; public Engine getEngine(){ return engine; } public void onCreate(){ engine = new Engine(); engine.init(); } }???? 3、在Activity中通过获取引擎对象,并调用getEngine
MyApplication app = ((MyApplication)this.getApplicationContext()); Engine engine = app.getEngine();
??? 4、在AndroidMainfest.xml文件中将Application节点的Android:name改成我们自定义的类。
?
以上
?