1. 程式人生 > >關於android雙屏異顯的一些總結和卡死的一些解決方法

關於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就好啦

本人小白一枚,歡迎大神們指正錯誤,不剩感激,(* ̄︶ ̄)