Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android位图在Sqlite中的存储_Android_Sqlite_Bitmap_Rss - Fatal编程技术网

Android位图在Sqlite中的存储

Android位图在Sqlite中的存储,android,sqlite,bitmap,rss,Android,Sqlite,Bitmap,Rss,我正在开发一个新闻阅读器应用程序,目前,当该设备在互联网上下载文章时,它会下载文章标题、文本、图像等,并将其全部存储到sqlite数据库中。这样,如果设备没有互联网,或者用户保存了一篇文章供脱机阅读,文章内容仍然可以查看。我的应用程序在下载文章时会延迟,并且不会在listview中很好地显示图像。它波涛汹涌,不太好。存储此数据并快速可靠地访问它的最佳方式是什么?此外,我需要一个懒惰的加载程序,不需要图像的url,有任何可以使用存储在SD卡上的图像为例 我的下载方法包括启动后台服务来下载文章文本和

我正在开发一个新闻阅读器应用程序,目前,当该设备在互联网上下载文章时,它会下载文章标题、文本、图像等,并将其全部存储到sqlite数据库中。这样,如果设备没有互联网,或者用户保存了一篇文章供脱机阅读,文章内容仍然可以查看。我的应用程序在下载文章时会延迟,并且不会在listview中很好地显示图像。它波涛汹涌,不太好。存储此数据并快速可靠地访问它的最佳方式是什么?此外,我需要一个懒惰的加载程序,不需要图像的url,有任何可以使用存储在SD卡上的图像为例


我的下载方法包括启动后台服务来下载文章文本和图像,并更新sqlite数据库中的每个项目行,所有这些都是在后台完成的。如果需要,我也可以发布代码。谢谢。

我不建议您将图像存储在数据库中。相反,为什么不将图像保存在磁盘缓存中,并将图像的密钥保存在数据库中呢。尝试使用。这很简单。顺便说一句,我不建议您将图像保存在数据库中,原因如下:

  • 图像是巨大的,即使您像varchar一样存储它们,数据量也会降低事务的速度
  • 如果您想要更高的性能,可以实现两级缓存,第一级带有内存缓存,第二级带有磁盘缓存

  • 我不建议您将图像存储在数据库中。相反,为什么不将图像保存在磁盘缓存中,并将图像的密钥保存在数据库中呢。尝试使用。这很简单。顺便说一句,我不建议您将图像保存在数据库中,原因如下:

  • 图像是巨大的,即使您像varchar一样存储它们,数据量也会降低事务的速度
  • 如果您想要更高的性能,可以实现两级缓存,第一级带有内存缓存,第二级带有磁盘缓存

  • 我不建议您将图像存储在数据库中。相反,为什么不将图像保存在磁盘缓存中,并将图像的密钥保存在数据库中呢。尝试使用。这很简单。顺便说一句,我不建议您将图像保存在数据库中,原因如下:

  • 图像是巨大的,即使您像varchar一样存储它们,数据量也会降低事务的速度
  • 如果您想要更高的性能,可以实现两级缓存,第一级带有内存缓存,第二级带有磁盘缓存

  • 我不建议您将图像存储在数据库中。相反,为什么不将图像保存在磁盘缓存中,并将图像的密钥保存在数据库中呢。尝试使用。这很简单。顺便说一句,我不建议您将图像保存在数据库中,原因如下:

  • 图像是巨大的,即使您像varchar一样存储它们,数据量也会降低事务的速度
  • 如果您想要更高的性能,可以实现两级缓存,第一级带有内存缓存,第二级带有磁盘缓存

  • 对于保存图像,我更喜欢将其直接保存在SD卡上,而不是保存到SQLite中

    我建议使用外部库下载图像和兑现,如

    但是,如果您仍然希望将其保存到SQLite中,请执行以下操作:

    摆桌子

    CREATE TABLE " + DB_TABLE + "("+ 
                   KEY_NAME + " TEXT," + 
                   KEY_IMAGE + " BLOB);";
    
    插入数据库

        public void addImage( String name, byte[] image) throws SQLiteException {
    
            database.beginTransaction();
            try {
                ContentValues cv = new  ContentValues();
                cv.put(KEY_NAME,    name);
                cv.put(KEY_IMAGE,   image);
                database.insert( DB_TABLE, null, cv );
           } finally {
               database.endTransaction();
           }
        }
    
    取回

    byte[] image = cursor.getBlob(1);
    

    对于保存图像,我更喜欢将其直接保存在SD卡上,而不是保存到SQLite中

    我建议使用外部库下载图像和兑现,如

    但是,如果您仍然希望将其保存到SQLite中,请执行以下操作:

    摆桌子

    CREATE TABLE " + DB_TABLE + "("+ 
                   KEY_NAME + " TEXT," + 
                   KEY_IMAGE + " BLOB);";
    
    插入数据库

        public void addImage( String name, byte[] image) throws SQLiteException {
    
            database.beginTransaction();
            try {
                ContentValues cv = new  ContentValues();
                cv.put(KEY_NAME,    name);
                cv.put(KEY_IMAGE,   image);
                database.insert( DB_TABLE, null, cv );
           } finally {
               database.endTransaction();
           }
        }
    
    取回

    byte[] image = cursor.getBlob(1);
    

    对于保存图像,我更喜欢将其直接保存在SD卡上,而不是保存到SQLite中

    我建议使用外部库下载图像和兑现,如

    但是,如果您仍然希望将其保存到SQLite中,请执行以下操作:

    摆桌子

    CREATE TABLE " + DB_TABLE + "("+ 
                   KEY_NAME + " TEXT," + 
                   KEY_IMAGE + " BLOB);";
    
    插入数据库

        public void addImage( String name, byte[] image) throws SQLiteException {
    
            database.beginTransaction();
            try {
                ContentValues cv = new  ContentValues();
                cv.put(KEY_NAME,    name);
                cv.put(KEY_IMAGE,   image);
                database.insert( DB_TABLE, null, cv );
           } finally {
               database.endTransaction();
           }
        }
    
    取回

    byte[] image = cursor.getBlob(1);
    

    对于保存图像,我更喜欢将其直接保存在SD卡上,而不是保存到SQLite中

    我建议使用外部库下载图像和兑现,如

    但是,如果您仍然希望将其保存到SQLite中,请执行以下操作:

    摆桌子

    CREATE TABLE " + DB_TABLE + "("+ 
                   KEY_NAME + " TEXT," + 
                   KEY_IMAGE + " BLOB);";
    
    插入数据库

        public void addImage( String name, byte[] image) throws SQLiteException {
    
            database.beginTransaction();
            try {
                ContentValues cv = new  ContentValues();
                cv.put(KEY_NAME,    name);
                cv.put(KEY_IMAGE,   image);
                database.insert( DB_TABLE, null, cv );
           } finally {
               database.endTransaction();
           }
        }
    
    取回

    byte[] image = cursor.getBlob(1);
    

    您可能希望将数据库操作包装在事务中-请参阅您可能希望将数据库操作包装在事务中-请参阅您可能希望将数据库操作包装在事务中-请参阅您可能希望将数据库操作包装在事务中-请参阅