Android測試的坑——螢幕翻轉

來源:互聯網
上載者:User

標籤:情況   use   class   nes   javascrip   android測試   第一題   example   解決   

背景

最近在看Android開發,發現有一些坑是沒有瞭解過Android開發是無法發現的,簡單的記錄一下。

情境

用Android開發一個回答問題的APP,大概有5個問題,回答完畢後切換到下一題,或者手工跳到下一題。整個APP功能很簡單,但是依然有很多的坑。

翻轉螢幕後問題被重設為第一題

這個問題是一個很有意思的問題,在豎屏的時候查看第四題,但是在橫屏之後,問題被重設為第一題了。

要瞭解這個問題,就必須瞭解Android中Activity的聲明周期。Android中Activity有如下的生命週期:onCreate、onStart、onResume、onPause、onStop、onDestroy。

  • 理解Android的生命週期的變化

當啟動一個Activity的時候,會啟用onCreate、onStart和onResume。終端使用者看到的狀態是onResume,這個狀態能夠獲得使用者的焦點,並且能讓使用者與系統進行互動。把日誌打出來如下:

12-13 17:15:22.714 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onCreate(Bundle) called12-13 17:15:22.754 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onStart() called12-13 17:15:22.754 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onResume() called

這個時候,把螢幕翻轉,日誌資訊如下:

12-13 17:16:37.354 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: nCreate(Bundle) called12-13 17:16:37.404 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onStart() called12-13 17:16:37.404 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onResume() called12-13 17:16:39.494 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onPause() called12-13 17:16:39.494 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onStop() called12-13 17:16:39.494 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onDestroy() called12-13 17:16:39.514 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: nCreate(Bundle) called12-13 17:16:39.514 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onStart() called12-13 17:16:38.514 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onResume() called

從日誌我們就可以清楚的看到在執行翻轉的時候,系統對原來的Activity進行了銷毀的處理,也就是執行了onPause、onStop和onDestroy。之後又執行了onCreate、onStart和onResume。重新建立了一個Activity。

  • 分析問題

從代碼上來看,我們控制題目是通過一個題號來處理的,也就是說在onCreate的時候,初始化題號的變數為0,所以在豎屏的時候查看題目的變化是正常的,而一旦翻轉螢幕後,就會重新執行onCreate方法,也就是說題號的變數被初始化為0,所以在橫屏後,我們就會發現看到的題目又變為第一題了。

  • 修複問題

在螢幕變化的時候,把這個題號的變數做一下儲存,就可以解決這個問題

  • 衍生拓展

Activity涉及到橫屏豎屏變化的時候,如果存在記錄某些資料的中間變數,需要做儲存操作,在測試這塊內容的過程中,需要針對這個問題進行專門的設計。

翻轉螢幕後布局顯示的不正確

正常我們看到的介面,是用代碼在xml布局檔案中寫的。一般來說,這個布局是針對豎屏狀態的。如果頁面翻轉後變為橫屏,這時Android系統會根據豎屏的布局檔案來自動做橫屏適配,這種適配有時候會出現控制項分布與預期不一致。

  • 分析問題

對於Android系統的自動適配,我們無法控制,這個問題涉及到Android系統的底層。

我們可以根據頁面來做分析,可以讓開發專門針對橫屏的特點進行編寫橫屏的布局檔案,讓橫屏之後頁面的布局由橫屏布局檔案來控制,以便達到我們想要的效果

另一種方式可以根據需求判定,是否禁止使用者進行橫屏操作。

  • 衍生拓展

Android的解析度千變萬化,在平板電腦上運行APP也可能導致布局看起來不舒服的情況,也可以評估需求針對這些做專門的布局處理

總結

在Android的螢幕翻轉的過程中比較容易出現奇怪的問題,而且翻轉的過程中容易出現一些小問題,而且這些問題往往很容易被忽視。

在測試過程中,最好針對每個頁面進行分析,是否允許翻轉,頁面是否會存在中間變數,在翻轉的過程中是否有儲存。

Android測試的坑——螢幕翻轉

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.