在Android 2.3.3上,我正在使用API方法批量导入我的一个SQLite表:
SQLiteDatabase.insert(String table,String nullColumnHack,ContentValues values)
它运行正常,但如果任何行存在数据库错误(例如约束错误),则会将完整的堆栈跟踪写入Android Logcat,这会快速填满。
如何关闭此堆栈跟踪?
我已经处理了抛出的任何异常,但是Logite正在SQLite库代码中被污染。
我担心移动设备的性能。
应该强制执行约束并且我将处理违规,但是Logcat中每次违规的20行堆栈跟踪乘以数百次违规是我想要关闭的。
不幸的是,我也无法使用Android Froyo引入的高级冲突处理,因为app也必须在较旧的设备上运行。
干杯。
答案 0 :(得分:6)
好的,我刚刚找到了解决方案如下:
我必须使用不同的API方法(不是SQLiteDatabase.insert()
):
SQLiteDatabase.insertOrThrow(String table, String nullColumnHack, ContentValues values)
现在,正如预期的那样从SQLite库抛出异常,并且不会转储堆栈跟踪。
答案 1 :(得分:0)
根据代码或进程ID,过滤掉您不感兴趣的任何内容。您可以在Eclipse中的Logcat查看器中轻松完成,或者如果您在命令行the instructions are here上使用Logcat。
答案 2 :(得分:0)
这不是污染。 LogCat的目的是注册设备/模拟器上发生的所有事情。
如果要过滤掉LogCat,可以在Eclipse中进行过滤(可以按日志标记,按pid或按日志级别进行过滤),从而提供一种从LogCat窗口中“删除”不需要的异常的方法。
编辑如果问题是效果(根据您的评论),我认为您不应该担心。