I have recently launched an Android app and I will soon post an article on how to get Push Service from Firebase integrated with Parse Server, hosted on Heroku.
While working on the android app, I discovered the following error:
Skipped 55 frames! The application may be doing too much work on its main thread.
I realized I was running heavy processing and UI updates on the same thread. A time consuming task (such as fetching data, filtering arrays) should run in its own thread and when the result is received/achieved the app should run UI update in the main thread.
For instance, in iOS we do:
Once the data has been received from backend then we run
self.tableView.reloadData()in the main thread to present this new data in the view.
Likewise in Android we should run heaving processing tasks in separate threads. We first define the update that we want to happen when we have received the result from a task. We create an instance of the Runnable class which will execute the UI update, in this case show the checkMark icon:
Then we create a separate thread for performing the task that can decide whether or not the checkmark will be displayed. Once the result is achieved, we run call the Runnable checkMarkIsVisible on the main thread.
You will not receive the error message anymore.
A friend tipped me off after reading this post that instead of having to grab the main thread, you can also run on main thread using