`
407827531
  • 浏览: 1075517 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

监测Databases的改变:ContentObserver与DatasetObserver

阅读更多

推荐安卓开发神器(里面有各种UI特效和android代码库实例)

其实这文章讲的就是通过ContentObserver来监测Databases的改变,并且做出相应的处理。
但对Databases的改变,除了可以通过ContentObserver来监测外,还可以通过DatasetObserver来监测。那我们来看看它们之间的区别

1,ContentObserver
Receives call backs for changes to content. Must be implemented by objects which are added to a ContentObservable.
接受回调去改变Content.
其实ContentObserver主要是通过Uri来监测特定的Databases的表:
比如:

public class TestContentObserver extends Activity {
	MyContentObserver mco;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mco=new MyContentObserver(new MyHandler());
        
        
    }
    @Override
    protected void onResume() {
    	// TODO Auto-generated method stub
    	super.onResume();
    getApplicationContext().getContentResolver().registerContentObserver(Contacts.CONTENT_URI, true, mco);
    }
    
    class MyHandler extends Handler{
    	@Override
    	public void handleMessage(Message msg) {
    		// TODO Auto-generated method stub
    		super.handleMessage(msg);
    	}
    };
    
    class MyContentObserver extends ContentObserver{

		public MyContentObserver(Handler handler) {
			super(handler);
			// TODO Auto-generated constructor stub
		}
		@Override
		public void onChange(boolean selfChange) {
			// TODO Auto-generated method stub
			super.onChange(selfChange);
			System.out.println("onChange "+selfChange);
		}
    	
		@Override
		public boolean deliverSelfNotifications() {
			// TODO Auto-generated method stub
			return super.deliverSelfNotifications();
			//return true;
		}
    };
}


registerContentObserver(Contacts.CONTENT_URI, true, mco);通过对Contacts.CONTENT_URI的监测,当Contacts发生变化就会call back回调mco里面的onChange方法来处理变化。

2,DatasetObserver
Receives call backs when a data set has been changed, or made invalid. The typically data sets that are observed are Cursors or Adapters. DataSetObserver must be implemented by objects which are added to a DataSetObservable.
DatasetObserver当数据集改变或者无效时,就会回调相应的函数做出处理,而典型的数据集就是cursor或者adapters.
这就是说通过cursor或者adapters的改变来做出相应的处理。
比如:QuickSearchBox中的SuggestionsAdapter

 mSuggestionsAdapter.registerDataSetObserver(new SuggestionsObserver()); private class SuggestionsObserver extends DataSetObserver {
        @Override
        public void onChanged() {
            updateInputMethodSuggestions();
        }
    }
 
分享到:
评论

相关推荐

    Graph Databases - New Opportunities for Connected Data(2nd) 无水印pdf

    Graph Databases - New Opportunities for Connected Data(2nd) 英文无水印pdf 第2版 pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本...

    Fuzzy.Databases.Modeling.Design.And.Implementation

    Fuzzy Databases: Modeling, Design And Implementation by Jose Galindo (Author), Angelica Urrutia (Editor), Mario Piattini (Editor) Publisher: Idea Group Publishing (October 19, 2005) | ISBN-10: ...

    Ontop: Answering SPARQL Queries over Relational Databases

    In this paper we present Ontop, an open-source Ontology Based Data Access (OBDA) system that allows for querying ...and OWL 2 QL and RDFS ontologies), and its support for all major relational databases

    Apress Next Generation Databases 2016

    Deciding to use a relational database was once truly a no-brainer, and the various commercial relational databases competed on price, performance, reliability, and ease of use rather than on ...

    图形数据库:连接数据的新机会-第二版Graph Databases: New Opportunities For Connected Data - Second Edition

    向技术从业者(包括开发人员,数据库专业人员和技术决策者)介绍图形和图形数据库。

    databases:适用于MySQL,MongoDB和Redis的ORM

    资料库 ... 在这里,您可以找到该项目的源代码和文档。 该项目将完全支持MongoDB,MySQL,PostgreSQL,H2和SQLITE。 如何安装 玛文 ... implementation 'com.github.celesteoficial:databases:VERSI

    how-databases-work.pdf

    There are many different databases: from the small and useful SQLite to the powerful Teradata. But, there are only a few articles that explain how a database works. You can google by yourself “how ...

    Visual C# and Databases

    Visual C# and Databases is a tutorial that provides a detailed introduction to using Visual C# for accessing and maintaining databases. Topics covered include: database structure, database design, ...

    docker-postgresql-multiple-databases:将多个数据库与官方PostgreSQL Docker映像一起使用

    docker-postgresql-multiple-databases:将多个数据库与官方PostgreSQL Docker映像一起使用

    DeZign For Databases V6.2.1

    《DeZign for Databases V6.2.1:数据库设计与管理的高效工具》 在信息化社会中,数据库的设计与管理是企业信息化建设的重要环节。DeZign for Databases V6.2.1是一款专为数据库设计人员打造的专业工具,它集成了...

    databases:为数据库课程工作

    "databases:为数据库课程工作"这个标题表明我们将深入探讨数据库在学习和工作中所扮演的角色。在这个主题下,我们主要关注SQL(结构化查询语言)的学习以及与数据库相关的实践工具。 描述中提到的"Udemy的《精通SQL...

    Visual Basic and Databases A Step By Step Database Programming Tutorial azw3

    Visual Basic and Databases A Step By Step Database Programming Tutorial 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    DeZign for Databases v3.4.1

    《DeZign for Databases v3.4.1:数据库设计与管理的得力助手》 在信息化时代,数据库的设计和管理是企业信息化建设的重要环节。DeZign for Databases v3.4.1 是一款专业级的应用软件,旨在帮助用户高效地规划...

    Graph Databases.pdf

    ### 图数据库(Graph Databases) #### 一、引言 随着信息技术的发展与数据量的激增,如何有效地收集、表示、存储以及操作复杂的信息(包括数据和知识)成为了当今社会面临的一项重大挑战。传统的关系型数据库虽然在...

    Guide to Scaling Web Databases with MySQL Cluster

    This provides unique insight into the challenges of scaling web databases, which in turn has driven the development of MySQL Cluster, integrating key technologies to enable the scaling of rapidly ...

    mysql-backup-databases:备份所有 MySQL 数据库

    首先,让我们理解标题"mysql-backup-databases:备份所有 MySQL 数据库"。这表明我们将讨论的是一个用于自动化备份MySQL服务器上所有数据库的流程或工具。在大型系统中,定期备份是防止数据丢失的关键策略,特别是在...

    Sequence-Databases:用于创建和存储蛋白质 DNA 序列数据库的存储库

    "Sequence-Databases"是一个专门为此目的设计的存储库,它采用Python语言进行开发,这使得数据处理更加高效且易于实现。 1. **序列数据库的用途**: - 生物学研究:科学家可以使用序列数据库来查找特定基因或...

    Apress.Beginning.C.Sharp.2008.Databases.From.Novice.to.Professional.Jan.2008

    通过学习这本书,读者将能够深入理解C#与数据库之间的交互,并能够利用.NET Framework的强大功能来构建高效、稳定的数据库应用程序。 在C# 2008中,数据库编程主要涉及到ADO.NET框架,这是Microsoft为.NET开发者...

Global site tag (gtag.js) - Google Analytics