码迷,mamicode.com
首页 > 其他好文 > 详细

ContentObserver和DataSetObserver区别

时间:2014-07-14 19:14:06      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:strong   os   数据   io   cti   re   

ContentObserver和DataSetObserver区别

 

ContentObserver是一个提前通知,这时候只是通知cursor说,我的内容变化了。
DataSetObserver是一个后置通知,只有通过requery() deactivate() close()方法的调用才能获得这个通知。
 因此,最为重要的还是ContentObserver,它可以告诉你数据库变化了,当然如果你要在更新完Cursordataset之后做一些
事情,datasetObserver也是必需的。

 

附上CursorAdapter部分源码:

 

    protected void onContentChanged() {

        if (mAutoRequery && mCursor != null && !mCursor.isClosed()) {

            if (Config.LOGV) Log.v("Cursor", "Auto requerying " + mCursor + " due to update");

            mDataValid = mCursor.requery();

        }

    }

 

 

    private class ChangeObserver extends ContentObserver {

        public ChangeObserver() {

            super(new Handler());

        }

 

        @Override

        public boolean deliverSelfNotifications() {

            return true;

        }

 

        @Override

        public void onChange(boolean selfChange) {

            onContentChanged();

        }

    }

 

    private class MyDataSetObserver extends DataSetObserver {

        @Override

        public void onChanged() {

            mDataValid = true;

            notifyDataSetChanged();

        }

 

        @Override

        public void onInvalidated() {

            mDataValid = false;

            notifyDataSetInvalidated();

        }

    }

 

 

1、ChangeObserver 监听到数据库变化,执行onContentChanged()方法中mCursor.requery()

2、MyDataSetObserver 监听mCursor数据集改变, notifyDataSetChanged()刷新界面

ContentObserver和DataSetObserver区别,布布扣,bubuko.com

ContentObserver和DataSetObserver区别

标签:strong   os   数据   io   cti   re   

原文地址:http://www.cnblogs.com/zhaojianhua/p/3842990.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!