Android GPU 過渡繪制小 Demo蚓曼,真正的測試

最近也是年底了,大家也是各忙各的钦扭,有的炫耀年終獎纫版,有的炫耀維多利亞的秘密。反正各種炫耀客情。

準(zhǔn)備

嗯其弊,你沒有進(jìn)錯癞己。這里是性能板塊。我們還是回歸正題吧瑞凑。畢竟在大話移動2.0上面我們也要說點(diǎn)性能的東西末秃。最近也是一邊在外演講一邊自己學(xué)習(xí)中。我們這里拿一個應(yīng)用來看吧籽御。首先打開手機(jī)中的該項(xiàng)設(shè)置练慕。

gpu1
gpu1

嘗試測試

我們打開我們要測試的應(yīng)用(注意這個是一個demo),進(jìn)入主頁面之后我們看到如下的界面技掏。

gpu2
gpu2

也許有同學(xué)就要說了铃将,啊呀不對啊。這個顏色這樣了哑梳。有bug>⒀帧!鸠真!但是問題就在這里悯仙。到了這里我們根本不能算測試完畢,這個至少在正確的認(rèn)知中吠卷,這樣最多是測試不完整锡垄,因?yàn)槟悴⒉恢绬栴}出在哪里。所以接著我們還是要繼續(xù)做的祭隔,首先我們要來判斷是不是有問題货岭。

標(biāo)準(zhǔn)

GPU繪制過渡,

顏色標(biāo)識: 從好到差:藍(lán)-綠-淡紅-紅

藍(lán)色1x過度繪制
綠色2x過度繪制
淡紅色3x過度繪制
紅色超過4x過度繪制
那么大家大概能夠心里有數(shù)了疾渴。接著我們要來真正的測試了千贯。

排查

那么首先我們先來看下UI的結(jié)構(gòu)。如下圖搞坝,我們得知是CustomViewAbove這個View搔谴。


gpu3
gpu3

gpu4
gpu4

我們必須追查到代碼里,主要我們會關(guān)注兩個瞄沙。

  1. 構(gòu)造函數(shù)
  2. 重寫的各種draw的方法

我們在代碼中看到如下構(gòu)造方法和draw的方法己沛。

    public CustomViewAbove(Context context) {
        this(context, null);
    }

    public CustomViewAbove(Context context, AttributeSet attrs) {
        super(context, attrs);
        initCustomViewAbove();

    }

    void initCustomViewAbove() {
        // setDescendantFocusability(FOCUS_AFTER_DESCENDANTS);
        this.setBackgroundColor(getResources().getColor(
            R.color.backColor));
        setDescendantFocusability(FOCUS_BEFORE_DESCENDANTS);
        setClickable(true);
        setFocusable(true);
        setWillNotDraw(false);
        final Context context = getContext();
        mScroller = new Scroller(context, sInterpolator);
        final ViewConfiguration configuration = ViewConfiguration.get(context);
        mTouchSlop = ViewConfigurationCompat
                .getScaledPagingTouchSlop(configuration);
        mMinimumVelocity = configuration.getScaledMinimumFlingVelocity();
        mMaximumVelocity = configuration.getScaledMaximumFlingVelocity();
        setInternalPageChangeListener(new SimpleOnPageChangeListener() {
            public void onPageSelected(int position) {
                if (mViewBehind != null) {
                    switch (position) {
                    case 0:
                    case 2:
                        mViewBehind.setChildrenEnabled(true);
                        break;
                    case 1:
                        mViewBehind.setChildrenEnabled(false);
                        break;
                    }
                }
            }
        });

        final float density = context.getResources().getDisplayMetrics().density;
        mFlingDistance = (int) (MIN_DISTANCE_FOR_FLING * density);
    }

首先我們從主界面上面可以看到是一個類似于fragment的控件的效果,Android的Views大家都知道是一個樹狀結(jié)構(gòu)距境,那么其實(shí)有很多肉眼看不到的view是不用去繪制的申尼。否則雖然看不到,但是依然會是影響性能的垫桂。我們經(jīng)過嘗試之后师幕,去掉了其中的

this.setBackgroundColor(getResources().getColor(
            R.color.backColor));
gpu5
gpu5

在這里的setBackground其實(shí)本身是繪制背景的,但是由于View的重疊,用戶并看不到這層繪制,但是的確重復(fù)繪制了。所以從效果上面我們可以看到從紅色變成了淡紅旱函。

總結(jié)

大家不要上來就問測試怎么測試弱贼,安全怎么測試禾锤。性能和安全和你們執(zhí)行測試用例,和UI的功能自動化是兩回事兒。很多需要人為的介入分析和嘗試。并不是說用一個工具去檢測下有沒有問題捌朴,有就有,沒有就沒有那么簡單张抄。希望大家明白這點(diǎn)砂蔽。

by monkey

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市署惯,隨后出現(xiàn)的幾起案子左驾,更是在濱河造成了極大的恐慌,老刑警劉巖极谊,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诡右,死亡現(xiàn)場離奇詭異,居然都是意外死亡轻猖,警方通過查閱死者的電腦和手機(jī)稻爬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜕依,“玉大人,你說我怎么就攤上這事琉雳⊙撸” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵翠肘,是天一觀的道長檐束。 經(jīng)常有香客問我,道長束倍,這世上最難降的妖魔是什么被丧? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮绪妹,結(jié)果婚禮上甥桂,老公的妹妹穿的比我還像新娘。我一直安慰自己邮旷,他們只是感情好黄选,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著婶肩,像睡著了一般办陷。 火紅的嫁衣襯著肌膚如雪貌夕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天民镜,我揣著相機(jī)與錄音啡专,去河邊找鬼。 笑死制圈,一個胖子當(dāng)著我的面吹牛们童,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播离唐,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼病附,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了亥鬓?” 一聲冷哼從身側(cè)響起完沪,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嵌戈,沒想到半個月后覆积,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡熟呛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年宽档,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庵朝。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡吗冤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出九府,到底是詐尸還是另有隱情椎瘟,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布侄旬,位于F島的核電站肺蔚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏儡羔。R本人自食惡果不足惜宣羊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望汰蜘。 院中可真熱鬧仇冯,春花似錦、人聲如沸鉴扫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至炕婶,卻和暖如春姐赡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背柠掂。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工项滑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涯贞。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓枪狂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親宋渔。 傳聞我的和親對象是個殘疾皇子州疾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容