關於android雙屏異顯的一些總結和卡死的一些解決方法
做android專案,接觸到一些雙屏異顯的知識,在這裡做個總結:
1.雙屏異顯
我們知道,這個是雙屏異顯的大概程式碼,基本類似,建立一個MyPresentation類,繼承Presentation,然後利用下面程式碼:
mDisplayManager=(DisplayManager) getSystemService(Context.DISPLAY_SERVICE);
displays = mDisplayManager.getDisplays();
if(displays.length<2){//小於2代表只有一個螢幕,那麼mPresentation就沒有必要建立了
System.out.println("----------------該裝置只有一個螢幕,不啟用A屏-----------");
return;
}
System.out.println("----------------該裝置有兩個螢幕,啟用A屏-----------");
if(null == mPresentation) {
mPresentation = new MyPresentation(this,displays[1],width,height);// displays[1]是副屏
this.mActivePresentations.put(1, this.mPresentation);
mPresentation.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
mPresentation.show();
但是第二個屏不能放在後臺service裡面,這個問題很嚴重,新人容易卡進去,造成卡死和error(100,0),service最好只做後臺控制,控制元件什麼的交給Presentation或者mainActivity去做。
2.android卡死現象
卡死分很多種情況,大致情況就是做了某些反應但是前臺在規定時間沒反應過來造成的,這種卡死狀態成為ANR,應用程式無響應,沒有好的避免方法只有去進行解決,重啟系統又不太人性化,在卡死狀態裡面,mainActivity裡面的執行緒其實是沒有掛掉的,掛掉的只是主函式和handler裡面的程式,利用這一點可以做個小小的測試,我們在mainActivity建立一個迴圈執行緒,每隔幾秒比較兩個數,呼叫一個handler,handler去改變這兩個數的數值,當程式卡死的時候handler裡面的程式不會執行,而執行緒會繼續執行,反覆執行,當發現兩個數沒有變化,就dosomething就好啦
本人小白一枚,歡迎大神們指正錯誤,不剩感激,(* ̄︶ ̄)