The service now keeps track of running AsyncTasks and cancels them in
these two cases:

1. When another AsyncTask filling the same adapter is started. Example:
In Checks Activity, another host is selected while an AsyncTask is still
loading data (applications and items) for the previous host. Both share
the same adapters, so the first task is cancelled to avoid the case
where one task overwrites the other task's data in the adapter.
2. When an activity is destroyed. Example: The Screens Activity is
destroyed before all graphs have been imported. As this is a very
time-consuming operation, it should be stopped.