Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 明明已經執行Log.i,偏偏打不出日志,執行log.i日志

明明已經執行Log.i,偏偏打不出日志,執行log.i日志

編輯:關於android開發

明明已經執行Log.i,偏偏打不出日志,執行log.i日志


Android內打日志用的當然是Log.i(tag,string),調試時的日志輸出可以很快的反映一些問題,方便我們跟進。

但是如果連日志都打不出來了怎麼辦呢,我今天就遇到了比較坑的問題。項目裡別的日志都輸出正常,偏偏我寫的Log.i沒有打印出東西,過濾器,進程,什麼的,都設置好了,日志死活出不來。

無奈,開啟單步調試,發現Log.i是執行了的,執行後還是沒有日志。怎麼辦呢?

只能出大招了,反編譯自己的包,看看編譯器到底對我的代碼做了什麼。果然就看到了編譯器使的壞。

下面是源代碼。

for (Map.Entry<String, String> entry : map.entrySet()) {
    Log.i("android", entry.getValue()) ;
}

將map裡的所有value輸出來,很正常。但是編譯器會把它弄成這樣。

Iterator i$ = map.entrySet().iterator();

while(i$.hasNext()) {
    Entry entry = (Entry) i$.next() ;
    Log.i("android", (String)entry.getValue()) ;
}

看上去似乎也很正常,但是仔細查看上下文發現。我的entry.getValue是一個ArrayList,將ArrayList強轉成String是不能成功的,所以,這個日志輸出的語句就失敗了。

 

然後,顯式的調用Log.i("android", entry.getValue())就可以解決問題了。

我其實很不解為什麼會編譯成強轉,而不是調用toString。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved