public abstract class AbstractCursor
extends Object
implements CrossProcessCursor
java.lang.Object | |
↳ | android.database.AbstractCursor |
Known Direct Subclasses |
Known Indirect Subclasses |
这是一个抽象游标类,它处理所有游标需要处理的很多通用代码,并且为方便起见而提供。
Nested classes |
|
---|---|
class |
AbstractCursor.SelfContentObserver 游标使用此类来跟踪其他人对其URI所做的更改。 |
Inherited constants |
---|
From interface android.database.Cursor
|
Fields |
|
---|---|
protected boolean |
mClosed 此字段在API级别23中已弃用。请改为使用 |
protected ContentResolver |
mContentResolver 此字段在API级别23中已弃用。请勿使用。 |
protected int |
mPos 此字段在API级别23中已弃用。请改用 |
Public constructors |
|
---|---|
AbstractCursor() |
Public methods |
|
---|---|
void |
close() 关闭光标,释放其所有资源并使其完全无效。 |
void |
copyStringToBuffer(int columnIndex, CharArrayBuffer buffer) 检索请求的列文本并将其存储在提供的缓冲区中。 |
void |
deactivate() 取消激活光标,使所有调用失败,直到调用 |
void |
fillWindow(int position, CursorWindow window) 将光标数据复制到窗口中。 |
byte[] |
getBlob(int column) 以字节数组的形式返回请求的列的值。 |
int |
getColumnCount() 返回总列数 |
int |
getColumnIndex(String columnName) 返回给定列名称的从零开始的索引,如果该列不存在,则返回-1。 |
int |
getColumnIndexOrThrow(String columnName) 返回给定列名称的从零开始的索引,如果该列不存在则返回 |
String |
getColumnName(int columnIndex) 返回给定的从零开始的列索引处的列名称。 |
abstract String[] |
getColumnNames() 以结果中列出的顺序返回一个字符串数组,其中包含结果集中所有列的名称。 |
abstract int |
getCount() 返回游标中的行数。 |
abstract double |
getDouble(int column) 以double形式返回请求的列的值。 |
Bundle |
getExtras() 返回一组额外的值。 |
abstract float |
getFloat(int column) 以浮点形式返回请求的列的值。 |
abstract int |
getInt(int column) 以int形式返回请求的列的值。 |
abstract long |
getLong(int column) 以long形式返回请求列的值。 |
Uri |
getNotificationUri() 返回此游标数据中的更改通知将传递的URI,如先前由 |
final int |
getPosition() 返回行集合中光标的当前位置。 |
abstract short |
getShort(int column) 以短为单位返回请求列的值。 |
abstract String |
getString(int column) 以String形式返回请求的列的值。 |
int |
getType(int column) 返回给定列值的数据类型。 |
boolean |
getWantsAllOnMoveCalls() 如果此方法返回true,onMove()将仅在进程间调用。 |
CursorWindow |
getWindow() 如果游标由 |
final boolean |
isAfterLast() 返回指针是否指向最后一行之后的位置。 |
final boolean |
isBeforeFirst() 返回光标是否指向第一行之前的位置。 |
boolean |
isClosed() 如果光标关闭,则返回true |
final boolean |
isFirst() 返回光标是否指向第一行。 |
final boolean |
isLast() 返回指针是否指向最后一行。 |
abstract boolean |
isNull(int column) 如果指定列中的值为空,则返回 |
final boolean |
move(int offset) 从当前位置向前或向后移动光标相对量。 |
final boolean |
moveToFirst() 将光标移到第一行。 |
final boolean |
moveToLast() 将光标移到最后一行。 |
final boolean |
moveToNext() 将光标移到下一行。 |
final boolean |
moveToPosition(int position) 将光标移到绝对位置。 |
final boolean |
moveToPrevious() 将光标移到上一行。 |
boolean |
onMove(int oldPosition, int newPosition) 每次将光标成功滚动到新位置时都会调用此函数,从而使子类有机会更新其可能具有的任何状态。 |
void |
registerContentObserver(ContentObserver observer) 注册一个观察者,当支持该游标的内容发生更改时调用该观察者。 |
void |
registerDataSetObserver(DataSetObserver observer) 注册时的变化发生在该光标数据集的内容被称为,例如一个观察者,当数据集通过改变 |
boolean |
requery() 执行再次创建光标的查询,刷新其内容。 |
Bundle |
respond(Bundle extras) 这是光标与光标通信的用户的一种带外方式。 |
void |
setExtras(Bundle extras) 设置 |
void |
setNotificationUri(ContentResolver cr, Uri notifyUri) 指定要监视更改的内容URI。 |
void |
unregisterContentObserver(ContentObserver observer) 通过 |
void |
unregisterDataSetObserver(DataSetObserver observer) 通过 |
Protected methods |
|
---|---|
void |
checkPosition() 如果光标位置超出范围,则此函数将引发CursorIndexOutOfBoundsException。 |
void |
finalize() 当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 |
Object |
getUpdatedField(int columnIndex) 此方法在API级别11中已被弃用。始终返回null,因为游标不支持更新行 |
boolean |
isFieldUpdated(int columnIndex) 此方法在API级别11中已弃用。由于游标不支持更新行,因此始终返回false |
void |
onChange(boolean selfChange) 子类在完成提交更新以通知所有观察者时必须调用此方法。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface android.database.CrossProcessCursor
|
|
From interface android.database.Cursor
|
|
From interface java.io.Closeable
|
|
From interface java.lang.AutoCloseable
|
void copyStringToBuffer (int columnIndex, CharArrayBuffer buffer)
检索请求的列文本并将其存储在提供的缓冲区中。 如果缓冲区大小不够,将分配一个新的字符缓冲区并分配给CharArrayBuffer.data
Parameters | |
---|---|
columnIndex |
int : the zero-based index of the target column. if the target column is null, return buffer |
buffer |
CharArrayBuffer : the buffer to copy the text into. |
void deactivate ()
取消激活光标,使所有调用失败,直到调用requery()
。 非活动游标使用比活动游标更少的资源。 调用requery()
将使光标再次处于活动状态。
void fillWindow (int position, CursorWindow window)
将光标数据复制到窗口中。
清除窗口并用从请求行位置开始的数据填充窗口,直到光标中的所有数据都用尽或窗口用尽空间。
填充的窗口使用与原始光标相同的行索引。 例如,如果从光标的第5行开始填充窗口,则可以通过询问第5行来从窗口查询第5行的内容,因为光标所使用的行索引与第5行之间存在直接对应关系窗口。
光标的当前位置(由 getPosition()
返回)不会被此方法更改。
Parameters | |
---|---|
position |
int : The zero-based index of the first row to copy into the window. |
window |
CursorWindow : The window to fill. |
byte[] getBlob (int column)
以字节数组的形式返回请求的列的值。
结果以及当列值为空或列类型不是blob类型时此方法是否引发异常是实现定义的。
Parameters | |
---|---|
column |
int : the zero-based index of the target column. |
Returns | |
---|---|
byte[] |
the value of that column as a byte array. |
int getColumnIndex (String columnName)
返回给定列名称的从零开始的索引,如果该列不存在,则返回-1。 如果您希望该列存在, getColumnIndexOrThrow(String)
改为使用getColumnIndexOrThrow(String)
,这会使错误更加清晰。
Parameters | |
---|---|
columnName |
String : the name of the target column. |
Returns | |
---|---|
int |
the zero-based column index for the given column name, or -1 if the column name does not exist. |
int getColumnIndexOrThrow (String columnName)
返回给定列名称的从零开始的索引,如果该列不存在则返回IllegalArgumentException
。 如果您不确定列是否存在或者不使用getColumnIndex(String)
并检查-1,这比捕获异常更有效。
Parameters | |
---|---|
columnName |
String : the name of the target column. |
Returns | |
---|---|
int |
the zero-based column index for the given column name |
String getColumnName (int columnIndex)
返回给定的从零开始的列索引处的列名称。
Parameters | |
---|---|
columnIndex |
int : the zero-based index of the target column. |
Returns | |
---|---|
String |
the column name for the given column index. |
String[] getColumnNames ()
以结果中列出的顺序返回一个字符串数组,其中包含结果集中所有列的名称。
Returns | |
---|---|
String[] |
the names of the columns returned in this query. |
int getCount ()
返回游标中的行数。
Returns | |
---|---|
int |
the number of rows in the cursor. |
double getDouble (int column)
以double形式返回请求的列的值。
结果以及此方法在列值为空,列类型不是浮点类型或浮点值不可表示时引发异常,或者由于实现定义了 double
值,因此浮点值不可表示。
Parameters | |
---|---|
column |
int : the zero-based index of the target column. |
Returns | |
---|---|
double |
the value of that column as a double. |
Bundle getExtras ()
返回一组额外的值。 这是光标向用户提供带外元数据的可选方式。 其中一种用途是报告为游标提取数据所需的网络请求的进度。
这些值只有在调用重新查询时才会更改。
Returns | |
---|---|
Bundle |
cursor-defined values, or Bundle.EMPTY if there are no values. Never null . |
float getFloat (int column)
以浮点形式返回请求的列的值。
结果以及当列值为空,列类型不是浮点类型或浮点值不可表示时,此方法引发异常,或者由于实现定义了 float
值,因此浮点值不可表示。
Parameters | |
---|---|
column |
int : the zero-based index of the target column. |
Returns | |
---|---|
float |
the value of that column as a float. |
int getInt (int column)
以int形式返回请求的列的值。
结果,这种方法是否抛出异常当列值为空,列类型是不是一个整数类型,或者整数值是范围[外 Integer.MIN_VALUE
, Integer.MAX_VALUE
]为实现定义的。
Parameters | |
---|---|
column |
int : the zero-based index of the target column. |
Returns | |
---|---|
int |
the value of that column as an int. |
long getLong (int column)
以long形式返回请求列的值。
结果,这种方法是否抛出异常当列值为空,列类型是不是一个整数类型,或者整数值是范围[外 Long.MIN_VALUE
, Long.MAX_VALUE
]为实现定义的。
Parameters | |
---|---|
column |
int : the zero-based index of the target column. |
Returns | |
---|---|
long |
the value of that column as a long. |
Uri getNotificationUri ()
返回此游标数据中的更改通知将传递的URI,如先前由 setNotificationUri(ContentResolver, Uri)
设置的 setNotificationUri(ContentResolver, Uri)
。
Returns | |
---|---|
Uri |
Returns a URI that can be used with ContentResolver.registerContentObserver to find out about changes to this Cursor's data. May be null if no notification URI has been set. |
int getPosition ()
返回行集合中光标的当前位置。 该值是从零开始的。 当行集合第一次返回时,游标将位于第一行之前的位置-1。 在返回最后一行之后,对next()的另一次调用将使游标超过最后一个条目,位于count()的位置。
Returns | |
---|---|
int |
the current cursor position. |
short getShort (int column)
以短为单位返回请求列的值。
结果,这种方法是否抛出异常当列值为空,列类型是不是一个整数类型,或者整数值是范围[外 Short.MIN_VALUE
, Short.MAX_VALUE
]为实现定义的。
Parameters | |
---|---|
column |
int : the zero-based index of the target column. |
Returns | |
---|---|
short |
the value of that column as a short. |
String getString (int column)
以String形式返回请求的列的值。
结果以及此方法在列值为空或列类型不是字符串类型时是否引发异常是实现定义的。
Parameters | |
---|---|
column |
int : the zero-based index of the target column. |
Returns | |
---|---|
String |
the value of that column as a String. |
int getType (int column)
返回给定列值的数据类型。 列的首选类型将返回,但数据可能会转换为其他类型,如获取类型方法(如getFloat(int)
等)中getInt(int)
getFloat(int)
。
返回的列类型是
Parameters | |
---|---|
column |
int : the zero-based index of the target column. |
Returns | |
---|---|
int |
column value type |
boolean getWantsAllOnMoveCalls ()
如果此方法返回true,onMove()将仅在进程间调用。
Returns | |
---|---|
boolean |
whether all cursor movement should result in a call to onMove(). |
CursorWindow getWindow ()
如果光标由 CursorWindow
支持,则返回一个预填充窗口,其中包含游标的内容,否则返回null。
Returns | |
---|---|
CursorWindow |
The pre-filled window that backs this cursor, or null if none. |
boolean isAfterLast ()
返回指针是否指向最后一行之后的位置。
Returns | |
---|---|
boolean |
whether the cursor is after the last result. |
boolean isBeforeFirst ()
返回光标是否指向第一行之前的位置。
Returns | |
---|---|
boolean |
whether the cursor is before the first result. |
boolean isClosed ()
如果光标关闭,则返回true
Returns | |
---|---|
boolean |
true if the cursor is closed. |
boolean isFirst ()
返回光标是否指向第一行。
Returns | |
---|---|
boolean |
whether the cursor is pointing at the first entry. |
boolean isLast ()
返回指针是否指向最后一行。
Returns | |
---|---|
boolean |
whether the cursor is pointing at the last entry. |
boolean isNull (int column)
如果指定列中的值为空,则返回 true
。
Parameters | |
---|---|
column |
int : the zero-based index of the target column. |
Returns | |
---|---|
boolean |
whether the column value is null. |
boolean move (int offset)
从当前位置向前或向后移动光标相对量。 正偏移向前移动,负偏移向后移动。 如果最终位置超出结果集的范围,则结果位置将分别固定为-1或count(),具体取决于值是否在集合的前面或结尾。
如果请求的目标可达,此方法将返回true,否则返回false。 例如,如果游标当前位于结果集的第二个条目中,并且调用move(-5),则该位置将被固定为-1,并且返回false。
Parameters | |
---|---|
offset |
int : the offset to be applied from the current position. |
Returns | |
---|---|
boolean |
whether the requested move fully succeeded. |
boolean moveToFirst ()
将光标移到第一行。
如果光标为空,则此方法将返回false。
Returns | |
---|---|
boolean |
whether the move succeeded. |
boolean moveToLast ()
将光标移到最后一行。
如果光标为空,则此方法将返回false。
Returns | |
---|---|
boolean |
whether the move succeeded. |
boolean moveToNext ()
将光标移到下一行。
如果游标已经超过结果集中的最后一个条目,则此方法将返回false。
Returns | |
---|---|
boolean |
whether the move succeeded. |
boolean moveToPosition (int position)
将光标移到绝对位置。 值的有效范围是-1 <= position <= count。
如果请求目标可达,此方法将返回true,否则返回false。
Parameters | |
---|---|
position |
int : the zero-based position to move to. |
Returns | |
---|---|
boolean |
whether the requested move fully succeeded. |
boolean moveToPrevious ()
将光标移到上一行。
如果游标已经在结果集中的第一个条目之前,此方法将返回false。
Returns | |
---|---|
boolean |
whether the move succeeded. |
boolean onMove (int oldPosition, int newPosition)
每次将光标成功滚动到新位置时都会调用此函数,从而使子类有机会更新其可能具有的任何状态。 如果它返回false,移动功能也会这样做,并且光标将滚动到beforeFirst位置。
Parameters | |
---|---|
oldPosition |
int : the position that we're moving from |
newPosition |
int : the position that we're moving to |
Returns | |
---|---|
boolean |
true if the move is successful, false otherwise |
void registerContentObserver (ContentObserver observer)
注册一个观察者,当支持该游标的内容发生更改时调用该观察者。 通常情况下, requery()
在调用requery()
之前,数据集才会更改。
Parameters | |
---|---|
observer |
ContentObserver : the object that gets notified when the content backing the cursor changes. |
void registerDataSetObserver (DataSetObserver observer)
注册时的变化发生在该光标数据集的内容被称为,例如一个观察者,当数据集通过改变 requery()
, deactivate()
,或 close()
。
Parameters | |
---|---|
observer |
DataSetObserver : the object that gets notified when the cursors data set changes. |
boolean requery ()
执行再次创建光标的查询,刷新其内容。 这可以随时完成,包括在致电deactivate()
。 由于此方法可能会在数据库上执行查询并可能需要一段时间,因此如果在Main(UI)线程上调用该方法,则可能会导致ANR。 如果在主线程上执行此方法,则会打印警告。
Returns | |
---|---|
boolean |
true if the requery succeeded, false if not, in which case the cursor becomes invalid. |
Bundle respond (Bundle extras)
这是光标与光标通信的用户的一种带外方式。 每个束的结构完全由光标定义。
其中一个用途是告诉游标在报告错误后应该重试网络请求。
Parameters | |
---|---|
extras |
Bundle : extra values, or Bundle.EMPTY . Never null . |
Returns | |
---|---|
Bundle |
extra values, or Bundle.EMPTY . Never null . |
void setExtras (Bundle extras)
设置 Bundle
返回的 getExtras()
。
Parameters | |
---|---|
extras |
Bundle : Bundle to set, or null to set an empty bundle. |
void setNotificationUri (ContentResolver cr, Uri notifyUri)
指定要监视更改的内容URI。
Parameters | |
---|---|
cr |
ContentResolver : The content resolver from the caller's context. |
notifyUri |
Uri : The URI to watch for changes. This can be a specific row URI, or a base URI for a whole class of content. |
void unregisterContentObserver (ContentObserver observer)
通过 registerContentObserver(ContentObserver)
取消注册先前已通过此光标注册的观察者。
Parameters | |
---|---|
observer |
ContentObserver : the object to unregister. |
void unregisterDataSetObserver (DataSetObserver observer)
通过 registerContentObserver(ContentObserver)
取消注册先前已使用此光标注册的观察者。
Parameters | |
---|---|
observer |
DataSetObserver : the object to unregister. |
void checkPosition ()
如果光标位置超出范围,则此函数将引发CursorIndexOutOfBoundsException。 get函数的子类实现应该在尝试检索数据之前调用它。
Throws | |
---|---|
CursorIndexOutOfBoundsException |
void finalize ()
当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类会覆盖finalize
方法来处置系统资源或执行其他清理。
的常规协定finalize
是,它被调用,如果当在Java TM虚拟机已确定不再有由该目的可以通过还没有死亡,除了作为一个动作的结果的任何线程访问的任何手段取决于某些其他可以完成的对象或类别的最终定稿。 方法finalize
可以采取任何行动,包括使这个对象再次可用于其他线程; 然而, finalize
的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。
类finalize
方法Object
执行特殊的操作; 它只是正常返回。 Object
子类可能会覆盖此定义。
Java编程语言不保证哪个线程将为任何给定对象调用finalize
方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。
在针对某个对象调用 finalize
方法之后,在Java虚拟机再次确定不再有任何方法可以通过尚未死亡的任何线程访问此对象,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。
对于任何给定的对象,Java虚拟机永远不会多次调用 finalize
方法。
finalize
方法引发的任何异常 finalize
导致终止此对象的终止,但会被忽略。
Object getUpdatedField (int columnIndex)
此方法在API级别11中已弃用。
始终返回null,因为游标不支持更新行
Parameters | |
---|---|
columnIndex |
int
|
Returns | |
---|---|
Object |
boolean isFieldUpdated (int columnIndex)
此方法在API级别11中已弃用。
由于游标不支持更新行,因此始终返回false
Parameters | |
---|---|
columnIndex |
int
|
Returns | |
---|---|
boolean |