編輯:關於android開發
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。
Android基礎之Activity,androidactivity一、什麼是Activity Activity是Android四大組件之一,並且Activity是組
Linux內核系列—4.操作系統開發之LDT,linuxldt一直以來,我們把所有的段描述符都放在GDT中,而不管它屬於內核還是用戶程序,為了有效地在任務之間實施隔離,處
安卓開發與分析者的利器--安卓右鍵工具 安卓右鍵工具,集成dex轉jar,二進制xml查看,apk相關信息查詢,apk圖標提取,apk優化,手機屏幕截圖,安裝卸載,簽
android:Activity數據傳遞之對象(parcelable) 這篇文章裡面寫了用seralizable使對象序列化在Activity直之間進行傳遞 sera