10天學安卓-第七天

咱們上次學習了百度定位以及SharedPreferences的使用,不知道你們有沒有注意到咱們新加了一個方法:java

    protected void onStop()
    {
        super.onStop();
        mLocationClient.stop();
    }

 

這個方法的做用是在界面中止的時候,同時中止百度定位功能。ide

 

聯想到咱們還有onCreate,那麼這兩個方法是作什麼用的?是什麼原理呢?學習

這就須要咱們來了解一下Activity的生命週期。日誌

Activity生命週期

2012120122450787

Activity的整個生命週期有七個重要方法,分別是onCreate、onStart、onResume、onPause、onStop、onRestart、onDestroy,並且這七個方法在不一樣的狀態下會有不一樣的觸發時機,生命週期

1. Activity啓動的時候,會依次執行onCreate、onStart和onResumeci

2. Activity失去焦點的時候,會依次執行onPause和onStopget

3. Activity從新得到焦點的時候,會依次執行onRestart、onStart和onResumeit

4. Activity關閉的時候,會依次執行onPause、onStop和onDestroyio

舉個例子:class

在APP已經啓動的時候,若是按下Back鍵,那麼就是第4種-關閉的狀況,會依次執行onPause、onStop和onDestroy,

按下Home鍵,那麼就是第2種-失去焦點的狀況,會依次執行onPause和onStop,這個時候若是再次啓動APP,就會是按照第3種-從新得到焦點的狀況,會依次執行onRestart、onStart和onResume。

爲了驗證這一點,咱們修改一下MainActivity.java,添加如下方法:

    @Override
    protected void onPause()
    {
        Log.v( "WeatherAPP", "onPause" );
        super.onPause();
    }

    @Override
    protected void onRestart()
    {
        Log.v( "WeatherAPP", "onRestart" );
        super.onRestart();
    }

    @Override
    protected void onResume()
    {
        Log.v( "WeatherAPP", "onResume" );
        super.onResume();
    }

    @Override
    protected void onStart()
    {
        Log.v( "WeatherAPP", "onStart" );
        super.onStart();
    }

    @Override
    protected void onDestroy()
    {
        Log.v( "WeatherAPP", "onDestroy" );
        super.onDestroy();
    }

 

 

而且在onCreate和onStop方法內加入分別加入:

        Log.v( "WeatherAPP", "onCreate" );
	Log.v( "WeatherAPP", "onStop" );

 

 

而後運行程序,試着重複以上操做,而且在Logcat View中查看相應的Log。

這裏說一點小技巧,點擊Logcat View左上角的綠色加號,能夠添加自定義的日誌過濾器,我這裏就是用了這樣的功能。

QQ截圖20140927194650

QQ截圖20140927194550

 

在明白了Activity的生命週期後,它們在實際的APP中具體怎麼應用?

那麼,舉一些例子。

1. 若是咱們的預報天氣APP須要在用戶每次從新可見的時候都獲取最新天氣,那麼調用獲取天氣相關的代碼就須要放置到onResume方法中

2. 另一種狀況,咱們的APP已經在前臺可見了,這時候來了電話,就變得不可見了,以後掛了電話,又從新可見了,這個時候一般是不須要從新獲取數據的,那麼調用獲取天氣相關的代碼就須要放置到onStart方法中

3. 最簡單的狀況,咱們只須要在啓動的時候獲取天氣,那麼就只須要在onCreate方法中執行

因此呢,技術不是問題,一切都須要根據實際的須要來決定咱們的程序應該如何實現。

 

以上是簡單介紹了一下Activity的生命週期,你們能夠在實踐中慢慢摸索,而且以上介紹的都只是基礎內容,高階一點的內容咱們將在以後的學習中慢慢接觸。

 

在瞭解了生命週期後,是否是要對咱們的APP作些修改呢,嗯,就按照第2種狀況修改吧。

所要作的只是把下面這段代碼從onCreate方法移到onStart中。

        String city = readCity();
        if( city != null && city.length() > 0 )
        {
            getWeather( city );
        }

 

看看結果是否是想要的呢。

 

想必練習到這裏,你們也都累了,理論知識真是惱人,不過確實是咱們所必須的,只有通過理論武裝的知識才能發揮出最大做用。

今天就到這裏吧,各位辛苦了。

明天是週末,會有不少的內容,請你們期待!

 

此係列文章系本人原創,如需轉載,請註明出處 www.liuzhibang.cn

相關文章
相關標籤/搜索