`
jiguansheng
  • 浏览: 128083 次
  • 性别: Icon_minigender_1
  • 来自: 九江
社区版块
存档分类
最新评论

Android API:Activity.managedQuery()

 
阅读更多

 

描述:

获取一个包含指定数据的 Cursor 对象,并由 Activity 来接管这个 Cursor 的生命周期。

首先该函数通过调用 getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder) 获取一个包含指定数据(由 query 方法的参数指定)的 Cursor 对象。

然后通过调用 startManagingCursor(c) 实现由 Activity 来接管返回的 Cursor c 的生命周期。
原型:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public final Cursor managedQuery(Uri uri,
 
                                 String[] projection,
 
                                 String selection,
 
                                 String[] selectionArgs,
 
                                 String sortOrder)
 
{
 
    Cursor c = getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);
 
    if (c != null) {
 
        startManagingCursor(c);
 
    }
 
    return c;
 
}

参数:

uri, 用于 Content Provider 查询的 URI,也就是说从这个 URI 中获取数据。例如:

1
Uri uri = Contacts.People.CONTENT_URI;   //联系人列表URI。

projection, 用于标识 uri 中有哪些 columns 需要包含在返回的 Cursor 对象中。例如:

1
2
3
    //待查询的columns
 
    String[] projection = { Contacts.PeopleColumns.NAME, Contacts.PeopleColumns.NOTES };

selection, 作为查询的过滤参数(过滤出符合 selection 的数据),类似于 SQL 中 Where 语句之后的条件选择。例如:

1
String selection = Contacts.People.NAME +=?//查询条件

selectionArgs, 查询条件参数,配合 selection 参数使用。例如:

1
String[] selectionArgs = {“Braincol”, “Nixn.dev};//查询条件参数

sortOrder,查询结果的排序方式(按查询列( projection 参数中的 columns )中的某个 column )排序)。例如:

1
String sortOrder = Contacts.PeopleColumns.NAME; //查询结果的排序方式(按指定的查询列排序)

返回值:

一个包含指定数据的 Cursor 对象。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Uri uri = Contacts.People.CONTENT_URI;
 
String[] projection = { Contacts.PeopleColumns.NAME,
 
        Contacts.PeopleColumns.NOTES };
 
String selection = Contacts.PeopleColumns.NAME + "=?";
 
String[] selectionArgs = { "Braincol","Nixn.dev" };
 
String sortOrder = Contacts.PeopleColumns.NAME;
 
//使用 managedQuery 获取 Contacts.People 这个 ContentProvider 的 Cursor。
 
Cursor cursor = managedQuery(uri, projection, selection, selectionArgs,sortOrder);

上述示例的含义就是:在联系人列表中查询 NAME 为 Braincol 和 Nixn.dev 两个联系人的 “NAME” 和 “NOTES” 信息,并且将这些信息按照名字( NAME )排序,最后将排序之后的结果包装在一个 Cursor 对象中返回。

 

 

 

分享到:
评论

相关推荐

    android中Content Proviter的使用方法总结

    查询操作通常通过 `ContentResolver.query()` 或 `Activity.managedQuery()` 方法执行。后者除了返回 `Cursor` 对象外,还会自动管理 `Cursor` 的生命周期,例如在 Activity 暂停或销毁时关闭 `Cursor`,以防止资源...

    Content Provider

    // 使用 ContentResolver 或 Activity 的 managedQuery 方法查询数据 Uri uri = ContentUris.withAppendedId(People.CONTENT_URI, 5); // 指定 ID 的 URI Cursor cursor = getContentResolver().query(uri, null, ...

    Android平台开发技巧大全.pdf

    每个Activity都可以有多个Intent Filter,但只有一个被标记为`android.intent.action.MAIN`和`android.intent.category.LAUNCHER`的Activity会作为应用的入口点,当用户点击应用图标时,系统会启动这个Activity。...

    Android基础ContentProviderPPT学习教案.pptx

    此外,Activity的managedQuery()方法可以自动管理Cursor的生命周期,简化开发者的工作。 五、处理查询结果 在得到Cursor后,通过移动游标并使用getColumnIndex()方法获取指定列的索引,然后使用getString()等方法...

    Android实例剖析笔记

    根据给定的文件信息,我们可以提炼出一系列与Android开发相关的知识点,主要集中在Android应用程序实例剖析、活动(Activity)的创建与管理、数据查询以及用户界面组件的使用等方面。 ### Android实例剖析笔记 #### ...

    android获取相册图片和路径的实现方法

    尤其是在Android 4.4(KitKat)及更高版本,由于系统API的变化,开发者需要采用新的方法来处理这一任务。以下是一个详细解释如何在Android 4.4之后获取相册图片和路径的实现方法。 首先,我们需要了解在不同版本的...

    android读取sd卡中音乐文件列表

    ### Android读取SD卡中音乐文件列表 在Android开发中,常常需要实现的功能之一就是读取设备中的音乐文件。这通常用于音乐播放器类的应用程序,以便用户可以浏览并选择他们想要播放的歌曲。本文将详细介绍如何通过...

    Android开发问题集锦第三期

    - 如果需要在Activity中查询数据,并希望数据自动随着Activity的生命周期变化而变化,则应使用`managedQuery`。 此外,如果查询的数据量较大,建议使用异步查询处理方法,如`AsyncQueryHandler`,以避免阻塞主线程...

    android读取内存卡文件方法

    在Android 6.0(API级别23)及更高版本中,应用必须在运行时请求存储权限。这意味着在尝试读取内存卡文件前,需检查并请求`READ_EXTERNAL_STORAGE`权限。若用户未授予此权限,应用应提示用户并请求授权。 ```java ...

    Android基础ContentProvider学习教案.pptx

    - **标准化的API:** 提供了一套标准的API用于读取和修改数据。 - **安全性高:** 可以通过权限控制来限制其他应用对数据的访问。 - **灵活性强:** 可以根据需要选择公开哪些数据,以及允许进行哪些操作(查询、...

    调用Android自带日历功能

    ### 调用Android自带日历功能详解 #### 一、引言 在移动应用开发领域,特别是Android平台上,能够高效地与系统内置服务进行交互是提升用户体验的关键之一。其中,利用Android系统的日历功能就是一个典型的例子。...

    信息系统集成项目经理继续教育课程11学习笔记.pdf

    查询联系人数据时,可以使用`managedQuery()`方法,它接受五个参数:URI、投影(projection,即要查询的字段)、选择条件(selection)、选择条件参数(selectionArgs)和排序顺序(sortOrder)。例如,要按姓名筛选...

    Android onCreate( )方法详细介绍

    在Android应用开发中,`onCreate()`方法是每个Activity生命周期中的关键部分,它在Activity创建时被系统调用。此方法主要用于初始化Activity的基本设置和UI布局。以下是对`onCreate()`方法的详细解析: 首先,从...

    【Android】分享照片时,进入图库选取照片.doc

    Cursor cursor = managedQuery(uri, projection, null, null, null); int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); System.out.println("image path...

    安卓开发数据库

    Cursor c = managedQuery(uri, projection, null, null, null); // 实例化桌号下拉列表Spinner的Adapter SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item,...

    android实现Uri获取真实路径转换成File的方法

    注意,从Android Q(API级别29)开始,由于隐私和安全性的考虑,直接访问外部存储的文件路径受到了限制。在这种情况下,你需要使用`ContentResolver`的`openFileDescriptor()`方法,配合`ParcelFileDescriptor`来...

    androidSIM

    这里提到的“androidSIM”显然是指Android系统中与SIM卡相关的操作和功能,具体涉及到了通过Android应用程序接口(API)来读取SIM卡上的联系人信息。 ### SIM卡与Android系统 SIM卡(Subscriber Identity Module)是...

Global site tag (gtag.js) - Google Analytics