Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> 關於Android程序使用全局變量

關於Android程序使用全局變量

編輯:高級開發

前陣子參加了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的思想,因此也能解決這個問題。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved