橫屏輸入密碼時等待屏滅按power鍵點亮後字元消失

2021-07-13 16:42:54 字數 857 閱讀 6079

[description]

選擇settings-> security-> screen lock ->none -> 編輯簡訊,輸入幾個字元"abcd" - > 然後將機器橫屏 -> power 滅屏 -> 然後power 亮屏 -> 發現輸入字元消失

[solution]

該問題是在android對ime framework設計上的乙個bug,工作流程如下:

1. ime鍵盤每次全屏彈出來的時候,都會通過乙個binder(ipc通訊)嘗試從ap那裡獲取當前文字框

內的文字;

2. ime framework會在滅屏的時候來關閉該ime通向ap 的binder,防止ime在滅屏的時候操作ap的文

本框內容;

3. 以上流程的設計帶來了該bug,當無鎖屏的時候,螢幕一點亮,ime鍵盤就會update自己文字框裡

的內容,

通過通向ap的binder獲取文字內容,但是,該binder在上次滅屏的時候被關閉了,所以ime沒能拿到

任何內容,顯示空白;

如果要解這個bug,就需要破壞以上流程中的某個環節,讓ime在點亮屏後能正常獲取到ap的內容

;但是這樣的破壞會使之後ime framework難以維護/公升級,而且之後如果anroid有新增feature的話

,會有未知bug的風險;

幸好的是,該bug對使用者的影響並不大:使用者難碰到(使用者要把鎖屏關掉,轉到橫屏,再進入恰好

ime全屏的editor介面,再做關/亮屏動作才會噴到),很容易恢復正常(發生bug的時候,使用者只需要

把ime收起來,再讓ime鍵盤彈出來就正常了,以上操作ime framework會重新建立ime 跟ap之間的

ipc連線),所以我們內部不建議修正該bug。

橫屏豎屏切換

當用n85 n95的時候,可以橫屏豎屏切換。當切換的時候,就要把程式中的控制項位置 大小重新計算,重新畫了。其實也沒有什麼困難的。1.這根據原始螢幕 240 320 的螢幕計算座標。當橫屏豎屏切換的時候,可以用下面的公式進行自動的拉伸。define calc wh a a rect width 24...

android 橫屏豎屏判斷

方法1 displaymetrics dm new displaymetrics getwindowmanager getdefaultdisplay getmetrics dm int width dm.widthpixels int height dm.heightpixels 方法2 if t...

IOS橫屏豎屏問題

引言 iphone的橫屏豎屏針對ios系統版本分為兩種開發方式 一種是ios 6之前的使用模式 一種是ios6的新模式.兩者的區別還是蠻大的.使用 支援自動旋轉?ios6之前通常使用 shouldautorotatetointe ceorientation 來單獨控制某個uiviewcontroll...