关于managedQuery和query的区别,我们都知道在Android系统中,SQLite数据库的相关操作方式被封装为内容提供Content Provider,可以帮助那些不会SQL语言的开发者快速实现Android平台上的数据库操作,但是平时我们在查询时一般返回的是Cursor对象,从本质上来看这两个API是不同的类提供的。比如 ContentResolver.query(),以及Activity.managedQuery()所以,我们看到一个是ContentResolver提供的查询方法,位于android.content.ContextWrapper.getContentResolver(),另一个则为Activity。

这两种方法的参数是一样的,但是Activity类的方法在整个声明周期中受Activity的影响,而常规我们处理数据逻辑可能单独分成一个类,直接使用Context对象传递实例句柄,同时Android开发网还建议大家,对于数据库查询操作如果数据较为庞大尽量使用异步的AsyncQueryHandler方法防止阻塞线程。

转自天翼空间社区