美文网首页Android
开发中问题思考

开发中问题思考

作者: 码农修行之路 | 来源:发表于2020-11-30 21:50 被阅读0次
    思考问题一:检测wifi网络频段,2.4G、5G、二合一自动选择
    WifiManager mWifiManager = getSystemService(WIFI_SERVICE);
    List<ScanResult> scanResults = mWifiManager.getScanResults();
    

    scanResults遍历,如果是二合一的频段,会搜索到两个相同名字的网络,一个2.4G一个5G,这时候需要判断是否有两个相同SSID的网路,一个2.4G一个5G,之后就可以判断此网络是二合一网络
    遍历获取scanResult.frequency网络频段
    两个标记,一个是否是5G的标记,一个是2.4G标记

    int wifiNetworkType = Constant.ADD_DEV_NETWORK_2_4_G; // 默认2.4GHz
    boolean is5GHz = false;
    boolean is24GHz = false;
    
    for(int i = 0; i < scanResults.size(); i++) {
    if (!is5GHz) {
           is5GHz = is5GHz(scanResult.frequency);
    }
    if (!is24GHz) {
        is24GHz = is24GHz(scanResult.frequency);
    }
    }
    
    if (is24GHz && is5GHz) {
        // 二合一网络
        wifiNetworkType = Constant.ADD_DEV_NETWORK_DOUBLE; // 二合一网络
    } else if (is24GHz && !is5GHz){
        // 2.4G网络
        wifiNetworkType = Constant.ADD_DEV_NETWORK_2_4_G; // 2.4G网络
    } else if (!is24GHz && is5GHz) {
        // 5G网络
        wifiNetworkType = Constant.ADD_DEV_NETWORK_5_G; // 5G网络
    }
    
    /**
     * 判断wifi是否为2.4G
     */
    public static boolean is24GHz(int frequency) {
        return frequency> 2400 && frequency < 2500;
    }
    
    /**
     * 判断wifi是否为5G
     */
    public static boolean is5GHz(int frequency) {
        return frequency > 4900 && frequency < 5900;
    }
    
    思考问题二:搜索筛选框字典

          写出所有可能排列组合的情况,适用于搜索产品较少的情况,每一个厂商的产品列表组合放在一个String里面,搜索是str.contains(CharSequence s)检索String里面是否包含搜索输入的内容,监听输入编辑框每次变更(新增、删除字符)

    思考问题三:多进程模式开启的问题

    在Android(一个应用)中使用多进程只有一个方法,就是在清单文件中指定四大组件的android:process属性
    android为每一个应用(或进程)分配一个独立的虚拟机,不同的虚拟机在内存分配上有不同的地址空间,这就导致了在不同虚拟机中访问同一类的对象会产生多份副本。
    多进程会造成的几个问题:

    1. 静态成员和单例模式完全无效
    2. 线程同步机制完全无效
    3. Sharedpreferences的可靠性下降
    4. Application会多次创建
      补充:运行在不同进程中的组件是属于不同的虚拟机和Application的
    思考问题四:手机系统时间和网络时间

          有时候app传消息,获取的手机系统时间不准确,和网络时间相差几十秒,导致接收消息方,解析时间和接收方的网络时间相差几十秒,此时接收方解析就会出现问题,为了避免获取的手机系统时间不准确,就需要获取网络时间和手机系统时间对比,相差大的话就用手机获取的网络时间
    获取网络时间需要

    思考问题五:海外,获取手机时区,一般是根据的格林威治时间划分(中时区),这时候就需要考虑世界上部分国家夏令时和冬令时(太平洋标准时间)

    相关文章

      网友评论

        本文标题:开发中问题思考

        本文链接:https://www.haomeiwen.com/subject/zwmdwktx.html