<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Android SQLite調試

      調試SQLite的神器,再也不用自己去打Log了,只需簡單的幾個命令。

      adb shell setprop log.tag.SQLiteLog V
      adb shell setprop log.tag.SQLiteStatements V
      adb shell stop
      adb shell start
      

      結果如下所示

      V/SQLiteStatements( 4405): /data/data/[package]/databases/[db_name].db: "UPDATE [table_name] SET state=-1 WHERE note_id='7556'"
      

      想關閉Log也很簡單,把上面代碼中的V改為""就行了

      說明在源碼SQLiteDebug.java

       /**
           * Controls the printing of informational SQL log messages.
           *
           * Enable using "adb shell setprop log.tag.SQLiteLog VERBOSE".
           */
          public static final boolean DEBUG_SQL_LOG =
                  Log.isLoggable("SQLiteLog", Log.VERBOSE);
      
          /**
           * Controls the printing of SQL statements as they are executed.
           *
           * Enable using "adb shell setprop log.tag.SQLiteStatements VERBOSE".
           */
          public static final boolean DEBUG_SQL_STATEMENTS =
                  Log.isLoggable("SQLiteStatements", Log.VERBOSE);
      
          /**
           * Controls the printing of wall-clock time taken to execute SQL statements
           * as they are executed.
           *
           * Enable using "adb shell setprop log.tag.SQLiteTime VERBOSE".
           */
          public static final boolean DEBUG_SQL_TIME =
                  Log.isLoggable("SQLiteTime", Log.VERBOSE);
      

      源碼中說要用VERBOSE,而我們使用V確也能起作用,看下isLoggable的實現就知道了,isLoggable是native方法,實際執行的是frameworks/base/core/jni/android_util_Log.cppandroid_util_Log_isLoggable方法,android_util_Log_isLoggable調用同一文件內的isLoggable

      static jboolean isLoggable(const char* tag, jint level) {
          String8 key;
          key.append(LOG_NAMESPACE);
          key.append(tag);
      
          char buf[PROPERTY_VALUE_MAX];
          if (property_get(key.string(), buf, "") <= 0) {
              buf[0] = '\0';
          }
      
          int logLevel = toLevel(buf);
          return logLevel >= 0 && level >= logLevel;
      }
      

      isLoggable中通過propery_get獲取我們之前設定的值,然后對獲取到的結果調用toLevel

      static int toLevel(const char* value)
      {
          switch (value[0]) {
              case 'V': return levels.verbose;
              case 'D': return levels.debug;
              case 'I': return levels.info;
              case 'W': return levels.warn;
              case 'E': return levels.error;
              case 'A': return levels.assert;
              case 'S': return -1; // SUPPRESS
          }
          return levels.info;
      }
      

      toLevel只判斷了值的第一個字符,所以我們之前只設置V也可以,其實只要是V開頭的,后接任何字符都無所謂。

      posted @ 2014-07-24 21:26  AngelDevil  閱讀(4044)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 日韩精品 在线 国产 丝袜| 小嫩模无套内谢第一次| 无遮无挡爽爽免费视频| 亚洲中文字幕亚洲中文精| 汤原县| 亚洲一二三区精品与老人| 国产成人综合色就色综合| 精品免费看国产一区二区| 精品国产迷系列在线观看| 久久精品一区二区日韩av| 亚洲国产成人AⅤ片在线观看| 在线观看无码av五月花| 国产精品久久露脸蜜臀| 又污又黄又无遮挡的网站| 丰满的少妇被猛烈进入白浆| 97成人碰碰久久人人超级碰oo| 欧美人与zoxxxx另类| 亚洲AV旡码高清在线观看| 办公室强奷漂亮少妇同事| av激情亚洲男人的天堂| 国产黄色一区二区三区四区| 国产69精品久久久久99尤物| 亚洲色精品vr一区区三区| 性色av一区二区三区精品| 国产成人高清精品亚洲| 久青草国产在视频在线观看| 中文字幕乱妇无码AV在线| 亚洲欧洲精品国产二码| 日韩一卡二卡三卡四卡五卡| 91精品一区二区蜜桃| 午夜成年男人免费网站| 日日爽日日操| 成人性无码专区免费视频| 绥化市| 在线a级毛片无码免费真人| 天天爽夜夜爱| 秋霞在线观看片无码免费不卡| 精品无码国产污污污免费| 久久丁香五月天综合网| 人与禽交av在线播放| 高阳县|