Add methods for rendering on worker thread #3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi there! Thanks for creating this library, much appreciated!
While giving this lib a whirl, I noticed that rendering the heatmap is quite an expensive operation to perform on the UI thread. Drawing ~100 data points took 300ms or so on my Nexus 5X, and caused a noticeable pause in the incoming transition of a fragment I used it in. I profiled this, and most of the time is spent in
Canvas.native_drawCircle
calls downstack oftryRefresh
.This PR adds a method
forceRefreshOnWorkerThread
to the heatmap class, which works similar toforceRefresh
but is intended to be called on a worker thread. Internally, it callstryRefresh
and takes care of most of the expensive operations.There are also a bunch of annotations, to support setting up a heatmap in a worker thread without getting "wrong thread" errors all over.
I tested this and the UI where I noticed this problem runs smoothly now. I also profiled before and after, the operations are properly run in the background thread now.