Android測試的坑 螢幕翻轉

2021-07-25 08:57:41 字數 2906 閱讀 1984

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

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

要了解這個問題,就必須了解android中activity的宣告週期。android中activity有如下的生命週期:oncreate、onstart、onresume、onpause、onstop、ondestroy。

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

12-13

17:15:22.714

22987-22987/com

.example

.svenweng

.geoquiz d/quizactivity: oncreate(bundle) called

12-13

17:15:22.754

22987-22987/com

.example

.svenweng

.geoquiz d/quizactivity: onstart() called

12-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) called

12-13

17:16:37.404

22987-22987/com

.example

.svenweng

.geoquiz d/quizactivity: onstart() called

12-13

17:16:37.404

22987-22987/com

.example

.svenweng

.geoquiz d/quizactivity: onresume() called

12-13

17:16:39.494

22987-22987/com

.example

.svenweng

.geoquiz d/quizactivity: onpause() called

12-13

17:16:39.494

22987-22987/com

.example

.svenweng

.geoquiz d/quizactivity: onstop() called

12-13

17:16:39.494

22987-22987/com

.example

.svenweng

.geoquiz d/quizactivity: ondestroy() called

12-13

17:16:39.514

22987-22987/com

.example

.svenweng

.geoquiz d/quizactivity: ncreate(bundle) called

12-13

17:16:39.514

22987-22987/com

.example

.svenweng

.geoquiz d/quizactivity: onstart() called

12-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的螢幕翻轉的過程中比較容易出現奇怪的問題,而且翻轉的過程中容易出現一些小問題,而且這些問題往往很容易被忽視。

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

linux螢幕擴充套件 擴充套件螢幕的校準 螢幕翻轉等

xrandr命令為螢幕擴充套件 xinput命令為輸入裝置 設定dsi 1為hdmi 1的右擴充套件 xrandr output dsi 1 right of hdmi 1 auto dsi 1為觸控螢幕且為右擴充套件,對其進行校準 xinput map to output deviceid dev...

移動APP測試 Android螢幕適配問題 一

android可以為當前的螢幕配置通過適當的方式管理應用程式的layout和bitmap drawables的表現,這種能力是android支援多螢幕的基礎。系統處理的應用程式螢幕適配的大部分工作,儘管如此,為了更妥善處理不同的螢幕配置,應該注意以下幾點 在清單檔案中明確宣告應用程式支援的所有螢幕尺...

Android的螢幕適配

所以就像是你去公司面試,第一印象也是很重要滴 本質1 使得布局元素自適應螢幕尺寸 開發中,我們使用的布局一般有 由於絕對布局 absolutelayout 適配性極差,所以極少使用。對於線性布局 linearlayout 相對布局 relativelayout 和幀布局 framelayout 需要...