可以在UI线程上查询DownloadManager吗?

时间:2013-04-03 23:58:39

标签: android android-anr-dialog android-download-manager

DownloadManager有一个方法query()。我的问题是,如果可以在UI线程上调用此方法,或者是否只应从后台线程调用它?

可以调用它会导致ANR吗?

1 个答案:

答案 0 :(得分:4)

如果查看query()方法的source

public Cursor query(Query query) {
  Cursor underlyingCursor = query.runQuery(mResolver, UNDERLYING_COLUMNS, mBaseUri);
  if (underlyingCursor == null) {
    return null;
  }
  return new CursorTranslator(underlyingCursor, mBaseUri);
}

...这可以分解为在UI线程中访问游标是否安全的问题。请参阅Mark Murphy的excellent answer。提取物:

  

所以在后台线程中查询DownloadManager。