今天看文件才想到 adb 有提供指令可以直接發 Intent 給 App,而且還能帶 URI data,這樣要用來測試 protocol 就方便多了!
Reference:
https://developer.android.com/training/app-indexing/deep-linking.html#testing-filters
2015/04/28
2015/04/27
android.database.CursorWindowAllocationException
當 Cursor 沒有確實關閉並且累積到一定數目時,App 就會出現異常報錯,無法查詢資料庫,甚至 crash。這邊記錄一些容易出錯的例子:
。提前返回
有時會沒注意到在調用 close() 之前就 return 了,尤其在比較複雜的程式碼中就可能會疏忽。
。異常處理
在還沒執行 close() 之前就因為處理 exception 而跳過。
要避免這種情形,應該要把 close() 放到 finally 裡確保它會執行。
另外我們也可以在 Cursor 的建構及關閉時加上 log 來測試及偵錯。
這樣就能清楚檢查是否有 Cursor 未確實關閉,但要先等 App 完全結束程序時再做,因為有些 Cursor 可能仍在背景運行中。
Reference:
http://oteku.blogspot.tw/2013/11/how-to-detect-android-cursor-leak-en.html
。提前返回
有時會沒注意到在調用 close() 之前就 return 了,尤其在比較複雜的程式碼中就可能會疏忽。
。異常處理
在還沒執行 close() 之前就因為處理 exception 而跳過。
要避免這種情形,應該要把 close() 放到 finally 裡確保它會執行。
另外我們也可以在 Cursor 的建構及關閉時加上 log 來測試及偵錯。
這樣就能清楚檢查是否有 Cursor 未確實關閉,但要先等 App 完全結束程序時再做,因為有些 Cursor 可能仍在背景運行中。
Reference:
http://oteku.blogspot.tw/2013/11/how-to-detect-android-cursor-leak-en.html
2015/04/26
java.util.ConcurrentModificationException
前陣子在做 for-each 執行某項過濾功能時遇到這個異常報錯,原因在於 for-each 的架構是不能使用於過濾需求的,一旦變動了集合的內容便會發生錯誤。在這邊可以使用 Iterator 調動集合的方式來解決,在多個執行緒中也能做到同步。
另外如果集合不大,也可以使用 counted loop 來處理。
Reference:
http://stackoverflow.com/a/223929/1770125
另外如果集合不大,也可以使用 counted loop 來處理。
Reference:
http://stackoverflow.com/a/223929/1770125
訂閱:
文章 (Atom)