在多個Activity之間共享變數
阿新 • • 發佈:2019-02-09
話說以前做的一個純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改成我們自定義的類。
以上