I’m working on an Android app, which uses an online service, which I need to load my Fragments. Basically, I have a menu, and each button replaces a Fragment underneath. When I click a button, the fragment starts being replaced, and if I press another button from my keyboard on the meantime, I get the Application Not Responding dialog, and then I click Wait, and my Fragment loads successfully.
Is there a way to prevent that from happening? My app will always take a few seconds to load, because of the web service. I read on Google, that I could use AsyncTask, and finish the loading on the doOnBackground method.. I don’t know if that works, but I can’t even try, because it won’t let me change the view there, it throws an error about only the original thread can change the views. And I need the service to finish loading my view, so I can’t even do the service with the AsyncTask.
I’m running out of ideas now! there has to be a way to do this. I appreciate suggestions!
Yes: don’t take so long on the main application thread. Use
StrictModeto identify likely culprits (disk I/O, network I/O), and use Traceview to find out what else you are doing that might be taking too long.That should be done in a background thread.
Which is why you update the views from the
onPostExecute()method, as is described in the documentation forAsyncTask.