我有一个应用程序,它在谷歌上运行,但现在我们计划改变它的小工作,以减少它的大小。当时它大约有60mb,这只是因为我们打包的图像数量。现在我们决定在构建的应用程序中发送较少的嵌入图像,然后让用户从服务器手动下载这些图像。但我对几件事感到困惑。这些如下。
所以这一点还有三点
此外,我有一个网格视图我正在使用它们来显示网格中的图像,用户点击图像并在新活动中打开真实图像并显示一些信息现在我也对此感到困惑,那就是
因此简而言之,网格视图混合了本地应用程序图像和来自服务器的图像。
感谢您阅读这么久的问题。
答案 0 :(得分:4)
我会尽力使其尽可能清晰:
安装后第一次启动应用时,请执行以下操作,检查表是否为空:
..-mainFolder
...................-subFolder1
..................-subFolder2
如果表格为空,则表示应用程序第一次运行或用户已删除私有应用程序数据,之后您需要从服务器下载整个图像列表。< / p>
现在,当您将图像下载到设备时,您应该在internal memory中创建一个单独的文件夹,该文件夹应该仅限于您的应用,为此:
// this will return true if the table has no data
public static boolean checkTable(String q){
DataBaseHelper dbh = new DataBaseHelper();
SQLiteDatabase sqldb = dbh.createAndOpenDB();
Cursor cd =null;
try{
boolean isEmpty=false;
cd = sqldb.rawQuery(q, null);
if(cd!=null){
cd.moveToFirst();
if(cd.getInt(0)==0){
isEmpty = true;
}
}
cd.close();
dbh.closeDB();
return isEmpty;}
catch(Exception e){
e.printStackTrace();
if(cd!=null){
cd.close();
dbh.closeDB();
}
return false; } }
然后,您应该将每个图像的名称及其访问路径保存到我们刚刚在步骤1中创建的表中。
因此,如果您想要从服务器更新图像,那么现在访问这些图像将更快更可靠。假设您有一些想要与设备同步的新图像,那么您应该创建另一个版本的表,该表必须与服务器的版本表同步..(两者都必须具有相同的表)因此,当您在步骤2中检查 image_path 表时,如果找到了数据,那么您应该从服务器获取当前版本的列表,并将它们与您的本地副本相匹配。如果任何版本不匹配,那么您应该相应地更新。
如果您希望用户无法使用清除数据按钮删除您应用的数据,则可以使用// write images privately
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
属性将其隐藏在清单文件中,例如:
android:manageSpaceActivity
修改强>
发表评论后,私下在内部存储器中创建一个文件夹并将文件保存在其中:
android:manageSpaceActivity="com.main.slash.LaunchingActivity"
答案 1 :(得分:1)
通过以位图格式解析来获取图像,并将它们存储在您的应用数据库或SD卡中。
我认为你已经下载了这些图像,然后你应该将图像保存到你的sdcard内存中,并使用编号,这样你就可以在以后的启动中检查它们是否存在。
如果不存在,则下载相同的图像并保存到具有相同名称的位置。
例如:image_1,image_2,..... image_10。 (下载图像到SD卡)
在“活动”或您想要的任何位置检查image_1是否不存在,然后使用相同的文件名(文件路径)下载并编写它。
从sdcard中检查不会消耗这么多时间,无论你在GridView中使用它们的哪个地方。
检查链接是否需要,如何从urlto sdcard(外部存储)保存图像: Android - Save image from URL onto SD card
链接以显示从SD卡到GridView的图像: http://android-er.blogspot.in/2013/10/gridview-example-load-images-to.html
那是所有人。
谢谢