欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Android筆記:onSaveInstanceState和onRestoreInstanceState總結(jié)

一、方法調(diào)用時間

創(chuàng)新互聯(lián)業(yè)務包括:成品網(wǎng)站、企業(yè)產(chǎn)品展示型網(wǎng)站建設、高端網(wǎng)站設計、電子商務型網(wǎng)站建設、成都外貿(mào)網(wǎng)站建設(多語言)、商城網(wǎng)站定制開發(fā)、按需網(wǎng)站建設、營銷型網(wǎng)站等。效率優(yōu)先,品質(zhì)保證,用心服務是我們的核心價值觀,我們將繼續(xù)以良好的信譽為基礎,秉承穩(wěn)固與發(fā)展、求實與創(chuàng)新的精神,為客戶提供更全面、更優(yōu)質(zhì)的互聯(lián)網(wǎng)服務!

  1. onSaveInstanceState是用來保存UI狀態(tài),在Activity殺死之前,它一般在onStop或者onPause之前觸發(fā);

  2. onRestoreInstanceState是在onResume之前觸發(fā)來恢復狀態(tài);

  3. Activity被殺死了,onCreate會被調(diào)用,且onRestoreInstanceState在 onResume之前恢復上次保存的信息;

  4. Activity沒被殺死,onCreate不會被調(diào)用,但onRestoreInstanceState 仍然會被調(diào)用,在 onResume之前恢復上次保存的信息;

二、方法使用場景 

  1. onSaveInstanceState() 只有在Acitivity被系統(tǒng)kill掉時才會調(diào)用。所以通常onSaveInstanceState()只適合用于保存一些臨時性的狀態(tài),而onPause()適合用于數(shù)據(jù)的持久化保存。

  2. onSaveInstanceState()方法只適合保存瞬態(tài)數(shù)據(jù), 比如UI控件的狀態(tài), 成員變量的值等,而不應該用來保存持久化數(shù)據(jù),持久化數(shù)據(jù)應該當用戶離開當前的activity時,在onPause()中保存(比如將數(shù)據(jù)保存到數(shù)據(jù)庫或文件中)。說到這里,還要說一點的就是在onPause()中不適合用來保存比較費時的數(shù)據(jù),所以這點要理解。

  3. 由于onSaveInstanceState()方法方法不一定會被調(diào)用, 因此不適合在該方法中保存持久化數(shù)據(jù), 例如向數(shù)據(jù)庫中插入記錄等. 保存持久化數(shù)據(jù)的操作應該放在onPause()中。若是永久性值,則在onPause()中保存;若大量,則另開線程吧,別阻塞UI線程。 

三、使用方法

1.在onSaveInstanceState方法中保存bundle:

    @Override
    protected void onSaveInstanceState(Bundle outState)
    {
        super.onSaveInstanceState(outState);
        mMapView.onSaveInstanceState(outState);
        
        saveState(outState);
    }
    
    @Override
    protected void onRestoreInstanceState(Bundle InState)
    {
        super.onRestoreInstanceState(InState);
        mMapView.onSaveInstanceState(InState);
        
        restoreState(InState);
    }
    /**
     * 進入三維模塊后,該activity會被kill掉,此處保存被殺掉前的一些狀態(tài)數(shù)據(jù)
     * 
     * @param outState
     */
    private void saveState(Bundle outState)
    {
        outState.putParcelable(HBContant.KEY_STATE_ESTATEINFO_JSON, mJson);
        outState.putParcelable(HBContant.KEY_STATE_ESTATEINFO_GALLERY, mGalleryJson);
        outState.putParcelable(HBContant.KEY_STATE_ESTATEINFO_FLASH, mFlashJson);
        outState.putParcelableArrayList(HBContant.KEY_STATE_ESTATEINFO_VIDEO, mVideoList);
        outState.putParcelableArrayList(HBContant.KEY_STATE_ESTATEINFO_NEWS, mNewsList);
        outState.putParcelableArrayList(HBContant.KEY_STATE_ESTATEINFO_HOUSELIST, mEstateHouseList);
    }
    
    private void restoreState(Bundle inState)
    {
    }

2.在oncreate或者onRestoreInstanceState方法中讀取保存的bundle:

        if (savedInstanceState == null)
        {
            //正常情況
            loadTask();
        }
        else
        {
            //進入三維圖被kill后返回,恢復頁面數(shù)據(jù)
            mJson = savedInstanceState.getParcelable(HBContant.KEY_STATE_ESTATEINFO_JSON);
            mGalleryJson = savedInstanceState.getParcelable(HBContant.KEY_STATE_ESTATEINFO_GALLERY);
            mFlashJson = savedInstanceState.getParcelable(HBContant.KEY_STATE_ESTATEINFO_FLASH);
            mVideoList = savedInstanceState.getParcelableArrayList(HBContant.KEY_STATE_ESTATEINFO_VIDEO);
            mNewsList = savedInstanceState.getParcelableArrayList(HBContant.KEY_STATE_ESTATEINFO_NEWS);
            mEstateHouseList = savedInstanceState.getParcelableArrayList(HBContant.KEY_STATE_ESTATEINFO_HOUSELIST);
            
            
            if(mJson != null && mGalleryJson != null && mFlashJson != null && mVideoList != null && mEstateHouseList != null)
            {
                loadComplete();
            }
            else
            {
                loadTask();
            }
        }

分享標題:Android筆記:onSaveInstanceState和onRestoreInstanceState總結(jié)
標題URL:http://www.chinadenli.net/article0/pecioo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設標簽優(yōu)化微信公眾號企業(yè)網(wǎng)站制作網(wǎng)站策劃企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設