Android连接/断开扫描枪时屏幕刷新异常解决分析

    Android连接/断开扫描枪时屏幕刷新异常解决分析



前言

  当你吃着火锅,唱着歌在Android终端上面连接扫码枪(包括蓝牙 USB等等)准备进行扫码工作时,突然屏幕一闪刷新了,造成临时加载的数据丢失了。本篇章就是为了解决这个问题的。



一.现象和整套解决方案


1.1 现场复盘

  插入和拔出扫码枪时演示demo效果如下:
在这里插入图片描述


1.2 分析原因

  扫描枪连接时是将其作为外部物理输入设备,即物理键盘,而安卓在改变屏幕方向、接入外部键盘时都是弹出隐藏键盘时都是手机状态改变,会导致重新执行onCreate( )方法,而造成部分数据丢失。


1.3 解决方案

  解决方案比较简单分如下两步走:

  • 在对应的AndroidManifest.xml配置如下内容,如下所示:
        <activity
            android:name="com.pax.api.test.ApiActivity"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:screenOrientation="landscape"
            android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
            android:theme="@style/AppTheme" >
  • 然后在activity中重写onConfigurationChanged()方法,不做任何处理,就是重写就行了,如下所示:

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        // TODO Auto-generated method stub
        super.onConfigurationChanged(newConfig);
        //其中keyboard表示键盘类型发生了变化,比如用户使用了外接键盘,其中取值为1表示显示系统键盘,为2表示隐藏系统键盘
        //keyboardHidden表示键盘的访问属性发生了变化,比如用户调出了键盘
        Configuration configuration = getResources().getConfiguration();
        Log.e("config", "newConfig  keyboard = " + newConfig.keyboard);
        Log.e("config", "newConfig  keyboardHidden = " + newConfig.keyboardHidden);
        Log.e("config", "configuration  keyboard = " + configuration.keyboard);
        Log.e("config", "configuration  keyboardHidden = " + configuration.keyboardHidden);
    }
       


结语

  好了,今天的博客到这里就结束了,各位江湖见。

原创文章 124 获赞 138 访问量 36万+

猜你喜欢

转载自blog.csdn.net/tkwxty/article/details/106159342