如何在sqlite Query中使用CancellationSignal

时间:2014-05-05 20:54:08

标签: android sqlite

当用户要求时,我正试图弄清楚如何取消长时间运行的Android sqlite查询。

环顾四周,我发现:

http://developer.android.com/reference/android/os/CancellationSignal.html

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

显示可以使用CancellationSignal的几种方法(查询,原始查询)。

我找不到任何使用它的例子,但我不明白如何使用它或它的效果可能是什么。我很确定我能算出第一个,但第二个让我担心。

2 个答案:

答案 0 :(得分:1)

从docs中我们以contentProvider查询方法为例。

  

query(Uri uri,String []投影,字符串选择,字符串[]   selectionArgs,String sortOrder, CancellationSignal   cancellationSignal

所以让你的活动例如实现一个cancelSignalListener,如下所示:

class MyActivity extends Actvity implements CancellationSignalListener{...}

然后创建一个CancelationSignal。设置如下:

mCancellationSignal.setOnCancelListener(this);

将mCancellationSignal传递给contentProvider查询方法,现在您可以强制取消,或者如果在内部发生取消,您将收到通知。

答案 1 :(得分:0)

通过拥有数据库线程和UI线程都知道的对象来使用它。 您可以通过调用cancel取消查询。

记录效果:

  

如果取消操作,则在执行查询时将抛出OperationCanceledException