用StrictMode来检测SQLite的泄漏leaked优秀排错方法

用StrictMode来检测SQLite的泄漏leaked优秀排错方法

Chapter: Android与SQLite数据库
1. SQLite 数据库的初步认识
2. SQLite 数据库的一些基本操作
3. SQLite 在 Android 开发中的简单应用演示
4. Android SQLite 增删改查操作的补充说明
5. 单独谈谈 Android Cursor 的使用细节
6. getWritableDatabase()/getReadableDatabase()区别
7. 用StrictMode来检测SQLite的泄漏leaked
当一个应用变得复杂,SQLite使用得频繁,就容易出现数据库泄漏 leaked:

A SQLiteConnection object for database ‘nowamagic.db’ was leaked! Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.

当代码过多,怎么排查呢?

一个方法是,使用android.os.StrictMode。

从 GINGERBREAD 开始 Android 就提供了 StrictMode 工具协助开发人员检查是否不小心地做了一些不该有的操作。使用方法是在 Activity 里面设置 StrictMode,下面的例子是打开了检查泄漏的 SQLite 对象以及 Closeable 对象(普通 Cursor/FileInputStream 等)的功能,发现有违规情况则记录 log 并使程序强行退出。

import android.os.StrictMode;

public class MainActivity extends Activity {
private static final boolean DEVELOPER_MODE = true;
public void onCreate() {
if (DEVELOPER_MODE) {
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
}
super.onCreate();
}
}

你可能感兴趣的:(SQLite的泄漏)