当用户要求时,我正试图弄清楚如何取消长时间运行的Android sqlite查询。
环顾四周,我发现:
http://developer.android.com/reference/android/os/CancellationSignal.html
和
http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
显示可以使用CancellationSignal的几种方法(查询,原始查询)。
我找不到任何使用它的例子,但我不明白如何使用它或它的效果可能是什么。我很确定我能算出第一个,但第二个让我担心。
答案 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
。