7

The DownloadManager has a method query(). My question is if it's okay to call this method on the UI Thread, or if it should only be called from a background thread?

Can calling it ever cause an ANR?

yydl
  • 24,284
  • 16
  • 65
  • 104

1 Answers1

6

If one looks at the source of the query() method:

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

... this could be break down to the question whether it is safe to access cursors in the UI thread. See Mark Murphy's excellent answer to this. Extract:

So query the DownloadManager in a background thread.

Community
  • 1
  • 1
saschoar
  • 8,150
  • 5
  • 43
  • 46