10天學安卓-第七天

來源:互聯網
上載者:User

標籤:

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

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

 

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

 

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

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

Activity生命週期

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左上方的綠色加號,可以添加自訂的日誌過濾器,我這裡就是用了這樣的功能。

 

在明白了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

 

10天學安卓-第七天

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.