Android - 使用Dao Pattern和contentProvider

时间:2011-02-15 18:59:48

标签: android dao android-contentprovider

使用带有dao Pattern的ContentProvider是正确的。 ?或者它会带来任何性能问题?

我会尽力解释。我有一个contentProvider。活动,道和豆..

这是代码:

class Bean(){

 String name;

}

class Dao{

 Activity activity;

 public Dao(Activity activity){

 this.activity = activity;

public List<Bean> getAllBean() {

    Cursor c = activity.managedQuery(Bean.CONTENT_URI, PROJECTION,
                null, null, Bean.DEFAULT_SORT_ORDER);
    return BeanMapper.GetAllFromCursor(c);
    }
}

}

Class Activity{
.....


 onCreate(....){

  Dao dao = new Dao(this);
  List<Bean> aList = dao.getAllBean();

}
....}
你怎么看?

问候

1 个答案:

答案 0 :(得分:35)

DAO旨在为数据库提供抽象接口。 ContentProvider已经这样做了。

是的,您可以制作第二个抽象层来提供DAO API,但是......您正在移动设备上进行编程。直接使用ContentProvider API会更有效率。有很多例子。例如,查看Cursors和ListViews的耦合程度 - 查看CursorAdapter类,您将看到它是如何设计为直接从数据库光标映射到屏幕上的列表。查看ContentObserver,看看它是如何设计推送 - 通知游标更新以匹配更改的数据库,反过来,更新ListView中的单个列表元素,以反映该数据库实时更改...

你将花费巨大的努力重新发明轮子试图让所有现有的代码通过DAO模型。我不知道你的申请,但我不确定我看到你从中获得的好处。