• 用StrictMode来检测SQLite的泄漏leaked

    优秀排错方法
    服务器君一共花费 21.732 ms 进行了 3 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    当一个应用变得复杂,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();
        }
    }
    

    报错的 log 很详尽,仔细检查就可以一步步慢慢排查。

更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [移动开发] Android根基概念Context 8 个条目
  2. [移动开发] 从代码角度去认识 Activity 4 个条目
  3. [移动开发] Android布局基本知识 3 个条目
  4. [Linux操作系统] CentOS上使用EPEL Repository 2 个条目
  5. [PHP程序设计] fsockopen,curl与file_get_contents 12 个条目
  6. [移动开发] ListView 使用相关问题集 1 个条目
  7. [软件工程与项目管理] 了解一点WebKit 9 个条目
  8. [数据库技术] 无限级分类数据表设计 4 个条目
  9. [JavaScript程序设计] Web实时通信技术名词解析 5 个条目
  10. [智力开发与知识管理] 整体性学习策略 9 个条目
  11. [软件工程与项目管理] 浏览器的HTML解析器 8 个条目
  12. [移动开发] 简单了解Android Fragment 3 个条目
窗口 -- [博客]