关于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就好啦

本人小白一枚,欢迎大神们指正错误,不剩感激,(* ̄︶ ̄)



你可能感兴趣的:(android)