[英]How to prevent Android SQLite from dumping stack trace to logcat?
在Android 2.3.3上,我正在使用API方法批量导入我的SQLite表之一:
SQLiteDatabase.insert(字符串表,字符串nullColumnHack,ContentValues值)
它工作正常,但是如果任何行都存在数据库错误(例如约束错误),则将完整的堆栈跟踪写入Android Logcat,从而迅速填充。
如何关闭此堆栈跟踪?
我已经处理了所有抛出的异常,但是Logcat从SQLite库代码中被污染了。
我担心移动设备上的性能。
应该强制执行约束,我将处理冲突,但是我想关闭Logcat中针对每个冲突的20行堆栈跟踪乘以数百个冲突。
不幸的是,我也不能使用Android Froyo引入的高级冲突处理功能,因为该应用程序还必须在较旧的设备上运行。
干杯。
好的,我刚刚找到了以下解决方案:
我必须使用其他API方法(不是SQLiteDatabase.insert()
):
SQLiteDatabase.insertOrThrow(String table, String nullColumnHack, ContentValues values)
现在,按预期从SQLite库引发了异常,并且没有转储堆栈跟踪。
只需根据标签或进程ID过滤掉您不感兴趣的任何内容。 您可以在Eclipse的Logcat查看器中轻松完成此操作,或者,如果您在命令行上使用Logcat,请参见此处的说明 。
这不是污染。 LogCat的目的是注册设备/仿真器上正在发生的一切。
如果要过滤出LogCat,则可以在Eclipse中进行过滤(可以按日志标签,PID或按日志级别过滤),从而提供了一种从LogCat窗口中“删除”有害异常的方法。
编辑如果问题是性能(根据您的评论),我认为您不必担心。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.