1. 程式人生 > >在多個Activity之間共享變數

在多個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改成我們自定義的類。

以上