Andorid中Application類的使用

application類的使用

    1.Application類
    Application和activity、service等四大組件一樣Android的組件。最開始學習Java
的
是,我們都是通過main方法進入程序的,但是Android的真正入口在哪裏?
    初學者可能認爲Android的入口不就是activity中onCreate的方法嗎,我最開始也是
這麼認爲的,那個時候我還不知道有application這個類,只知道在manfestandroid.xml
文件中定義一個application標籤,在裏面在寫Android的四大組件,組件中還可以添加
action,category等屬性值。但是不理解application到底有什麼用,現在工作半年了,
對Android的一些知識點理解也不同,那麼application到底有什麼用了?
    其實application纔是Android的真正入口,在application中有一個方法oncreate,
這個方法在啓動APP的時候就會被調用。我們如何寫一個自己的application了?首先寫
一個類MyApplication繼承Application,然後重寫onCreate等,最後在
manfestandroid.xml的Application標籤中添加屬性
andorid:name="com.simple.fan.MyApplication",這個屬性的值是自定義Application
的詳細路徑,寫到這裏我們自定義的MyApplication的就寫完了,並且這個類還是全局單
例的類。
<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity 
            android:name="com.simple.fan.MainActivity">
            <intent-filter >
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

        2.application類的關係

java.lang.Object

    android.content.Content

        android.content.ContentWrapper

            android.app.Application

    android.app.Application中的四個方法

        onConfigurationChanged(Configuration newConfig)
    onCreate() :android的真正入口
    onLowMemory()
    onTerminate()
:APP真正退出時條用的方法

   3.application的用法

      在application中定義的變量是全局的,應用程序不退出,這邊變量就會清除,一直存在堆棧中,在application中存放的數據一般都是全局的變量,這樣可以起到共享數據的作用,前不久做了一個項目,在一個activity中會通過網絡操作,獲取到數據,保存在內存中,當退出這個activity時,內存中的數據就會被GC回收掉,當再次進入activity時,又需要網絡操作,網絡操作會耗時,這時界面會沒有什麼數據,很影響用戶的體驗,但是,當我們上次進入這個activity時,就把數據緩存到application中,下次在進入時,先從application中取數據,顯示出來,之後,我們在開個線程在後臺偷偷的去下載最新數據,下載完成後再把全新的數據刷到UI界面上去。

Appliccation類

<span style="font-size:14px;">public class GlobalApplication extends Application {
	
	public Map<String, Object> mMap = new HashMap<String, Object>();
	
	@Override
	public void onCreate() {
		super.onCreate();
		mMap.put("fan", "my name is fan");
		Log.i("fan", "onCreate");
	}

	@Override
	public void onTerminate() {
		super.onTerminate();
		Log.i("fan", "onTerminate");
	}
	
}</span>
Activity類

<span style="font-size:18px;">public class MainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main_activity);
		Log.i("fan", ((GlobalApplication)getApplication()).mMap.get("fan").toString());
	}
}</span>

在activity中獲取application的方法爲getApplication()或者通過Content.getApplicationContent方法獲取Application,另外通過Application也可以獲取到一些關於APP的一些信息,例如一些包名和APP的信息。

    好了,Application就講到這裏。


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