如何防止Android SQLite将堆栈跟踪转储到logcat?

Ern*_*nie 2 sqlite android stack-trace logcat

在Android 2.3.3上,我正在使用API​​方法批量导入我的一个SQLite表:

SQLiteDatabase.insert(String table,String nullColumnHack,ContentValues values)

它工作正常,但如果任何行存在数据库错误(例如约束错误),则会将完整的堆栈跟踪写入Android Logcat,这会迅速填满.

如何关闭此堆栈跟踪?

我已经处理了任何异常抛出但是Logcat正在SQLite库代码中被污染.

我担心移动设备的性能.

  • 导入的事务已经启用
  • 预加载的DB是不可能的,因为数据可能会改变

应该强制执行约束并且我将处理违规,但是Logcat中每次违规的20行堆栈跟踪乘以数百次违规是我想要关闭的.

不幸的是,我也无法使用Android Froyo引入的高级冲突处理,因为应用程序也必须在旧设备上运行.

干杯.

Ern*_*nie 6

好的,我刚刚找到了解决方案如下:

我必须使用不同的API方法(不SQLiteDatabase.insert()):

SQLiteDatabase.insertOrThrow(String table, String nullColumnHack, ContentValues values)
Run Code Online (Sandbox Code Playgroud)

现在,正如预期的那样从SQLite库抛出异常,并且不会转储堆栈跟踪.