多Activity之間的數據共享

        Activity之間的數據共享問題起初一看並沒有那麼糾結,原因在於兩點,一來兩個Activity之間可以通過回傳的方式進行數據的共享,而哪怕是多個Activity之間,也可以通過靜態類進行數據的共享。今天Leo8573只是介紹一種避免使用靜態類的方法,而這種方法也是不求詳解,只是記錄,以解燃眉之急。

      

       首先,在項目中創建一個新類,繼承Applcation。這個類就是我們的數據類,可以理解爲平時我們說用的Modle類,換句話說,這個類可以存放一些數據字段,並寫上Get和Set方法。

      

       比如在以下代碼中,創建一個叫做DataApp的類,繼承Applcation,並在DataApp類中寫入我們想要共享的數據字段,配以Get和Set方法。

 

代碼示例:

public class DataApp extends Application {

      private String userName;
      private String passWord;
 
 
 public String getUserName() {
  return userName;
 }

 public void setUserName(String userName) {
  this.userName = userName;
 }

 public String getPassWord() {
  return passWord;
 }

 public void setPassWord(String passWord) {
  this.passWord = passWord;
 }
 
}


其次,在項目的AndroidManifest.xml文件中的<application>標籤中,加入android:name =".DataApp"屬性。

代碼示例:

 <application
        android:name =".DataApp"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name="com.leo8573.test.LoginActivity"
            android:label="@string/app_name"
            android:configChanges="keyboardHidden|orientation"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.NoTitleBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
 </application>

 

       最後就是使用了,在我們想要使用的Activity調用getApplication()方法就可以得到DataApp的對象,然後將要存的字段值通過Set方法存入DataApp中,然後在其它Activity中同樣使用getApplication()方法得到DataApp的對象,然後再用Get方法得到剛在其它Activity中存入的數據字段,這樣就達到了共享的目的。

 

代碼示例:

//一個Activity中
DataApp dataApp = (DataApp) getApplication();
dataApp.setUserName("Leo8573");

 

//另一個Activity中
DataApp dataApp = (DataApp) getApplication();
String userName = dataApp.getUserName();


        但值得注意的是,用完的數據字段一定要記得回收,即將字段設爲null,否則數據將一直存在於DataApp中。

代碼示例:

//在一個Activity中,數據用完
DataApp dataApp = (DataApp) getApplication();
dataApp.setUserName(null);


      以上就是這種利用Aplication進行Activity之間的數據共享和傳輸的方法。至於爲什麼這樣做,Leo8573理解是與Application的生命週期有關,一個應用程序在運行期間只會有一個Application對象,這樣就可以利用它的這一特點進行數據的共享了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章