【Android】Application
阿新 • • 發佈:2018-11-15
Android應用程式開發中,有的時候我們在應用程式的任何一個地方都需要訪問一個全域性變數,也就是在任何一個Activity中都可以訪問的變數。它不會因為Activity的生命週期結束而消失。要實現應用程式級的變數,我們可以通過Application這個類來實現。 首先,我們新建一個類HelloApplication繼承Android.app.Application類,然後在我們的類中增加一些變數。如下所示:
Java程式碼
然後在應用程式配置檔案AndroidManifest.xml中進行相應的配置,如下圖所示:
完成之後,我們在應用程式的任何一個Activity中可以通過如下方法訪問我們的變數:
Java程式碼
怎麼樣? 是不是很簡單? Application物件只有在應用程式中所有Activity都destroy時才會destrory,所有我們可以在任何一個Activity中訪問它。 那麼為什麼我們不能使用static 變數來存放全域性變數呢?如下所示:
Java程式碼
通過這種方式,DataStoreClass類可能會像Activity一樣在某些時候被android系統強行銷燬。所以在應用程式執行期間,DataStoreClass的值可能會丟失,或得到一些您不想要的值。 FROM: helloandroid
///////////////////////////////////////////////////////////////////////////////
//使用不羅嗦了,注意紅色的地方就可以了
首先:
Java程式碼
其次:
<application android:icon="@drawable/icon" android:label="@string/app_name" android:name=".BaseApplication" >
...
</application>
再次:在activity中
BaseApplication app=null;
app = ((BaseApplication) getApplicationContext());
app.getText();
Java程式碼
- public class HelloApplication extends
- private int globalVariable=1;
- public int getGlobalVariable() {
- return
- }
- public void setGlobalVariable(int globalVariable) {
- this
- }
- }
然後在應用程式配置檔案AndroidManifest.xml中進行相應的配置,如下圖所示:
完成之後,我們在應用程式的任何一個Activity中可以通過如下方法訪問我們的變數:
Java程式碼
- ((HelloApplication)getApplication()).setGlobalVariable(10);
- int valiable=((HelloApplication)getApplication()).getGlobalVariable();
怎麼樣? 是不是很簡單? Application物件只有在應用程式中所有Activity都destroy時才會destrory,所有我們可以在任何一個Activity中訪問它。 那麼為什麼我們不能使用static 變數來存放全域性變數呢?如下所示:
Java程式碼
- public class DataStoreClass {
- private static int globalVariable=1;
- public static int getGlobalVariable() {
- return globalVariable;
- }
- public static void setGlobalVariable(int newGlobalVariable) {
- globalVariable = newGlobalVariable;
- }
- }
通過這種方式,DataStoreClass類可能會像Activity一樣在某些時候被android系統強行銷燬。所以在應用程式執行期間,DataStoreClass的值可能會丟失,或得到一些您不想要的值。 FROM: helloandroid
///////////////////////////////////////////////////////////////////////////////
//使用不羅嗦了,注意紅色的地方就可以了
首先:
Java程式碼
- import android.app.Application;
- /**
- * 全域性變數類,不需要用Bundle傳來傳去了
- * @author admin
- *
- */
- public class BaseApplication extends Application {
- private String text = "My world";
- public String getText() {
- return text;
- }
- public void setText(String text) {
- this.text = text;
- }
- }
其次:
<application android:icon="@drawable/icon" android:label="@string/app_name" android:name=".BaseApplication" >
...
</application>
再次:在activity中
BaseApplication app=null;
app = ((BaseApplication) getApplicationContext());
app.getText();