最近在看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 需要...