最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android筆記之:onConfigurationChanged詳解

 更新時間:2013年05月10日 14:49:14   作者:  
本篇是對Android中onConfigurationChanged的使用進行了詳細的分析介紹。需要的朋友參考下

  從事Android開發(fā),免不了會在應用里嵌入一些廣告SDK,在嵌入了眾多SDK后,發(fā)現幾乎每個要求在AndroidManifest.xml申明Activity的廣告SDK都會要求加上注明這么一句屬性:

復制代碼 代碼如下:

android:configChanges="orientation|keyboard|keyboardHidden"

  通過查閱Android API可以得知android:onConfigurationChanged實際對應的是Activity里的onConfigurationChanged()方法。在AndroidManifest.xml中添加上訴代碼的含義是表示在改變屏幕方向、彈出軟件盤和隱藏軟鍵盤時,不再去執(zhí)行onCreate()方法,而是直接執(zhí)行onConfigurationChanged()。如果不申明此段代碼,按照Activity的生命周期,都會去執(zhí)行一次onCreate()方法,而onCreate()方法通常會在顯示之前做一些初始化工作。所以如果改變屏幕方向這樣的操作都去執(zhí)行onCreate()方法,就有可能造成重復的初始化,降低程序效率是必然的了,而且更有可能因為重復的初始化而導致數據的丟失。這是需要千萬避免的。

  為了明白這個問題,特意寫了一個Demo用于觀察執(zhí)行結果?! ?BR>

復制代碼 代碼如下:

public class ConsoleActivity extends Activity {
     private String str = "0";

     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         //模擬數據初始化
         str = "1";
         Log.e("FHT", "onCreate:" + str);
     }

    

     @Override
     protected void onStart() {
         super.onStart();
         //模擬顯示之后,數據發(fā)生改變
         str = (new Date()).getTime() + "";
         Log.e("FHT", "onStart:" + str);
     }

 

     @Override
     public void onConfigurationChanged(Configuration newConfig) {
         super.onConfigurationChanged(newConfig);
         Log.e("FHT", "onConfigurationChanged:" + str);
     }
 }

運行結果如下:

  從上圖可以看出,當屏幕方向發(fā)生了三次翻轉,三次翻轉都沒有重新進入onCreate()方法,所以str的值得以延續(xù),如果去除AndroidManifest.xml中關于onConfigurationChanged的相關代碼,程序的執(zhí)行順序將發(fā)生變化,每次屏幕方向的變化都將引起str值的重置。這是大多數開發(fā)過程中所不希望看到的。

  另外需要注意的是onConfigurationChanged()方法中的:super.onConfigurationChanged(newConfig);一定不能省去,否則將引發(fā):android.app.SuperNotCalledException 異常。

相關文章

  • Kotlin基本數據類型詳解

    Kotlin基本數據類型詳解

    大家好,本篇文章主要講的是Kotlin基本數據類型詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Flutter利用ORM框架管理數據庫詳解

    Flutter利用ORM框架管理數據庫詳解

    使用?ORM?框架最大的好處是簡化了數據庫維護的代碼量,使得我們可以專注于業(yè)務代碼實現。本篇,我們看看如何使用ORM框架管理數據庫版本遷移,需要的可以參考一下
    2023-04-04
  • Android Fragment的用法實例詳解

    Android Fragment的用法實例詳解

    Fragment的出現,如微信的額主界面包含多個Fragment,使得微信功能更加簡潔明了。這篇文章給大家講解Android Fragment用法,感興趣的朋友一起看看吧
    2018-08-08
  • android輕松管理安卓應用中的log日志 發(fā)布應用時log日志全部去掉的方法

    android輕松管理安卓應用中的log日志 發(fā)布應用時log日志全部去掉的方法

    android合理的管理log日志,在開發(fā)的時候打印出來,在發(fā)布的時候,把所有的log日志全部關掉,下面就把方法給你一一道來
    2013-11-11
  • Android解析服務器端發(fā)來的xml數據示例

    Android解析服務器端發(fā)來的xml數據示例

    Android跟服務器交互數據,有時數據量大時,就需要以xml形式的交互數據,下面與大家分享下使用XmlPullParser來解析xml數據,感興趣的朋友可以參考下哈
    2013-06-06
  • Android編程根據系列圖片繪制動畫實例總結

    Android編程根據系列圖片繪制動畫實例總結

    這篇文章主要介紹了Android編程根據系列圖片繪制動畫的方法,以實例形式總結了Android根據圖片繪制動畫的常見情況與具體實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • android實現ViewPager懶加載的三種方法

    android實現ViewPager懶加載的三種方法

    這篇文章主要介紹了android實現ViewPager懶加載的三種方法,懶加載在項目運用中很廣泛,可以提高運行速度,有興趣的可以了解一下。
    2017-03-03
  • Android自定義View繪制貝塞爾曲線實現流程

    Android自定義View繪制貝塞爾曲線實現流程

    貝塞爾曲線的本質是通過數學計算的公式來繪制平滑的曲線,分為一階,二階,三階及多階。但是這里不講數學公式和驗證,那些偉大的數學家已經證明過了,所以就只講講Android開發(fā)中的運用吧
    2022-11-11
  • Flutter UI實現側拉抽屜菜單

    Flutter UI實現側拉抽屜菜單

    這篇文章主要為大家詳細介紹了Flutter UI實現側拉抽屜菜單,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • android效果TapBarMenu繪制底部導航欄的使用方式示例

    android效果TapBarMenu繪制底部導航欄的使用方式示例

    本篇文章主要介紹了android效果TapBarMenu繪制底部導航欄的使用方式,具有一定的參考價值,有興趣的可以了解一下。
    2017-01-01

最新評論

高阳县| 北宁市| 三台县| 突泉县| 丰都县| 庆云县| 威远县| 精河县| 福州市| 长兴县| 太仆寺旗| 台山市| 边坝县| 岐山县| 江口县| 通城县| 天台县| 包头市| 平乡县| 西青区| 马尔康县| 来宾市| 娄底市| 庆元县| 浮梁县| 犍为县| 双柏县| 佛山市| 新营市| 甘洛县| 无锡市| 会泽县| 清水河县| 梁河县| 固始县| 斗六市| 永泰县| 定安县| 延边| 松溪县| 云南省|