在4.0.3,代码如下原因警告 “W / CursorWrapperInner(11252):没有事先敲定接近光标()”。
Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
getContentResolver().query(uri, null, null, null, null);
在SORCE,我发现它来自何方,谁能告诉我如何避免,因为我怀疑这涉及到一些奇怪的问题,警示?
我也遇到过这个奇怪的问题。 我使用ContentProvider的给我提供光标和CursorLoader处理取我的片段/活动。 所以我做的一切“书”。
我经历使用4.1.1设备此警告消息,但它似乎对我的Nexus 7,其在4.2至已经消失。 我个人不会采取这一警告的任何严重的通知。
更新:我测试我的代码与Android V2.2和我从这个错误中一个完整的堆栈跟踪。 原来,我的代码是获取另一个光标(使用装载机不是一个牵强),它是这样的,这是有问题的代码。 关闭这个手工做的伎俩。
这行代码返回游标对象:
getContentResolver().query(uri, null, null, null, null);
很奇怪,你正在执行一个查询,但忽略结果。 执行查询的唯一目的是为了获得在游标的结果。 你应该存储到像这样的变量:
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
然后,你可以使用光标得到你需要的任何数据,当你用它做致电:
cursor.close();
您可以关闭光标在Activity#onDestroy()
或更早的版本,但在此之前的活动完全结束,你必须关闭它,否则你会看到这样的警告。 这是因为游标被另一个进程的内存支持,你不想泄露内存。