早上在写一个读取手机联系人信息的demo,遇到一bug,莫名半天,百思不得其解,直接异常是获cur为nullPoint!
后来上网一搜,哦,知道了,原来在查询联系人时用了两层游标,只关闭了外层游标,没有关闭里层的,导致内存资源没有被释放,多次运行后,系统资源被耗尽。
// 获得所有的联系人
Cursor cur = resolver.query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, ContactsContract.Contacts.DISPLAY_NAME
+ " COLLATE LOCALIZED ASC");
很愚蠢的纠结一上午,后来再看看其它异常信息,
java.lang.RuntimeException: No memory in memObj
后来上网一搜,哦,知道了,原来在查询联系人时用了两层游标,只关闭了外层游标,没有关闭里层的,导致内存资源没有被释放,多次运行后,系统资源被耗尽。
哎,深刻的教训,只盯着一个异常log看可真够操蛋的