上篇文章提到了一點全局變量這個概念,那裏面沒具體說,但是有時候用起來,確實能起到意想不到的效果,所以,我這裏就具體說說這個怎麼做到的。
首先說說我們一般什麼時候用全局變量。上一篇文章裏遇到的問題是這樣的,我在一個activity裏面有一個變量,但是我們不是通過bundle傳遞給另一個activity,因爲不是從這個activity直接跳轉到另一個activity,可能中間經歷了幾個activity的跳轉,我們總不能一次一次的bundle的傳吧。因此,我們就想,能不能有一個“空間”把我們某個activity的變量保存了,在其他的任何一個activity中,我們都能通過訪問這個“空間”,把保存的數據讀出來,這類似於全局變量。
那怎麼實現全局變量呢?
Android中的Application就是這樣的“空間”。我們把全局變量申明在Application中,然後我們實現一個自己的類去繼承Application,在這個類中,我們要實現設置這個全局變量的方法和獲取這個全局變量的方法。有了這兩個方法,我們就可以在給全局變量賦值的activity中調運設置全局變量的方法把全局變量的值設置了;在我們需要用到這個全局變量的activity裏面調運獲取全局變量的方法來獲取這個值,這樣就可以了。
我這裏簡單的把我項目中用到的全局變量的類代碼貼出來。
public class MyApp extends Application {
private String correct13 = "0";
private String correct25 = "0";
private String correct48 = "0";
private String correct65 = "0";
private BluetoothService mChatService = null;
public String[] getcorrect(){
String[] str = new String[5];
str[0] = correct13;
str[1] = correct25;
str[3] = correct48;
str[4] = correct65;
return str;
};
public void setcorrect(String[] str){
this.correct13 = str[0];
this.correct25 = str[1];
this.correct48 = str[3];
this.correct65 = str[4];
}
public BluetoothService getservice(){
return mChatService;
}
public void setservice(BluetoothService service){
this.mChatService = service;
}
}
第一個和第二個方法就是簡單的字符串數組全局變量,第一個是設置方法,第二個是獲取方法。第三個和第四個是藍牙部分,從這裏也可以看出來,全局變量也可以是某個類的實例,不僅僅是常規的變量類型。
設置全局變量值的時候,要先用我們這個myApp類去實例化一個對象,然後引用這個set方法;獲取全局變量值的時候,也要先實例化一個對象,然後引用get這個方法。簡單的給出代碼就類似這樣。
private String[] str;
MyApp app = (MyApp)getApplicationContext();
app.setcorrect(str);
private static String[] correctstr ;
MyApp app = (MyApp)getApplicationContext();
correctstr = new String[5];
System.arraycopy(app.getcorrect(),0,correctstr,0,5);