实习笔记17.07.18

  1. MediaStore.Images.Media.BUCKET_DISPLAY_NAME,// 相册名称
    Media内数据库列名整理
  2. 调用相机将照片存储在路劲中时,路径path=“ /sdcard/DCIM/camera/ ” (注意前后的 “/”不能丢,android根目录以 “ / ”开头)
  3. 有时候 file.exit()比查询数据库操作更耗时 【一次性查询多个数据集比多次查询合适数据集耗时更长】--(主要体现在刷新操作,一次刷新,每次都要查询多个数据集)
  4. 如何在Android媒体库中进行分组查询?
    ****在Android中使用ContentResolver查询媒体库时是没有Group by参数的,但是可以追加在where参数中。****
    例如查询按文件夹查询图片,并且查询每个文件夹下面的图片数量
final String selection = "1=1) group by ([bucket_id]"; 
final String[] projection = new String[]{ 
    "count([_id])", 
    "bucket_display_name"}; 
Cursor c = getContentResolver().query( 
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
    projection, 
    selection, null, null); 
while (c.moveToNext() ) { 
    Log.e("haha", c.getString(2) + ":"+c.getInt(0)); 
} 
c.close();

主要是注意系统会为where语句添加一对小括号,即where ( … ) , 跟上面的”)(“拼接成两对小括号 ,最后拼接成的Sql语句为:

SELECT count([_id]), bucket_id, bucket_display_name FROM images WHERE (1=1) group by ([bucket_id])

实习开发:

  1. 【优化 】修改了获取相册信息的方式--(没有理解leader意思,要二次查询)
    2.【问题】在相册选择开发中,首页显示照片是根据albumName,通过数据库操作显示照片。但在调用相机时,将拍摄照片存储在"/sdcard/DCIM/camera/"下时,虽然已经存储在目录中了,但为什么通过数据库操作不能更新到?
    ---要通知数据库进行入库操作
  2. 【优化】数据库查询,能直接查询到所得信息就直接查询,尽量减少对信息进行二次加工
    【优化】activity改为fragment
    【优化】delete删除会有返回值,依靠返回值进行判断是否删除成功

你可能感兴趣的:(实习笔记17.07.18)