admin管理员组

文章数量:1620378

描述:

        如题,线上的设备大概率会出现WIFI不能重连的现象,而非断电模式重启(reboot)则不会出现这样的情况。

分析:

 经分析这跟Linux的文件系统储存机制有关。用户层对文件进行写操作时,系统是先将文件存储在内存中,待CPU空闲后再将数据写入flash中,这是一种缓存机制,目的是提高文件的读写效率。但带来的是在机器突然断电的情况下丢失数据的风险。

解决方案:

    在Linux系统中有命令sync,目的就是强制把内存中待写入的数据强制刷入flash中。回到我们的问题,我们在保存WIFI密码后调用sync命令即可。

在文件frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiNative.java中如下所示加入 fileSync();即可

private void  fileSync(){
          Runtime runtime = Runtime.getRuntime();
                  try {
                     runtime.exec("sync");
                  } catch (IOException e) {
                      e.printStackTrace();
                          Log.e(TAG, "fileSync"); 
               }
   }

  public boolean saveConfig() {
      boolean ret;
      ret = doBooleanCommand("SAVE_CONFIG");
       fileSync();//新增加
      return ret;
 }

    

  

 

本文标签: 重启设备androidwifiBug