10天學安卓-第七天


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

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

 

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

 

聯想到我們還有onCreate,那么這兩個方法是做什么用的?是什么原理呢?

這就需要我們來了解一下Activity的生命周期。

Activity生命周期

2012120122450787

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

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

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

3. Activity重新獲得焦點的時候,會依次執行onRestart、onStart和onResume

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

舉個例子:

在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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM