zoukankan      html  css  js  c++  java
  • 【Android开发】监听图库数据库的变化

    步骤一:

    保存图片或者删除之前,初始化ContentObserver

    ScreenshotContentObserver  mScreenObserver = new ScreenshotContentObserver(context, mHandler);
      Uri imageUri = MediaStore.Images.Media.INTERNAL_CONTENT_URI;
      Uri imageUri2 = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
      context.getContentResolver().registerContentObserver(imageUri, false, mScreenObserver);
      context.getContentResolver().registerContentObserver(imageUri2, false, mScreenObserver);
    

    跟进ScreenshotContentObserver类:

    public class ScreenshotContentObserver extends ContentObserver {
    
        public static final String TAG = "ScreenshotContentObserver";
        private Context mContext;
        private Handler mHandler;
        private boolean showToast = true;
    
        public ScreenshotContentObserver(Context context, Handler handler) {
            super(handler);
            mContext = context;
            mHandler = handler;
        }
    
        /**
         * 主要在onChange中响应数据库变化,并进行相应处理
         */
        @Override
        public void onChange(boolean selfChange) {
            super.onChange(selfChange);
            if(showToast){
                Toast.makeText(mContext, "保存成功!", Toast.LENGTH_SHORT).show();
                showToast = false;
            }
        }
    }
    

    设定boolean值showToast的意图,是因为每添加一张图片,都会执行一次onChange 方法,此处是个人为避免这种情况单独处理的。

    Handler传过来,可以向主线程回传消息。

    步骤二:

    操作图库,添加删除图片即可。

  • 相关阅读:
    php socket 客户端代码
    linux crontab定时执行
    加载 pcntl 多进程
    Xdebug 配置
    Zend Debugger 配置
    windows SVN搭建
    深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
    操作系统-分段机制
    C++中的new、operator new与placement new
    线程安全的概念
  • 原文地址:https://www.cnblogs.com/neo-java/p/10184902.html
Copyright © 2011-2022 走看看