Есть две возможные ситуации:
1-й случай
Если вы используете единственный Loader или у вас их несколько, но вам все равно, какой из них запущен:
getSupportLoaderManager().hasRunningLoaders()
2-й случай
Вы хотите знать, работает ли какой-то конкретный Loader
. Кажется, он не поддерживается SDK, но вы можете легко реализовать его самостоятельно.
а) Просто добавьте флаг
public class SomeLoader extends AsyncTaskLoader<String[]> {
public boolean isRunning;
@Override
protected void onStartLoading() {
isRunning = true;
super.onStartLoading();
//...
forceLoad();
}
@Override
public void deliverResult(String[] data) {
super.deliverResult(data);
isRunning = false;
}
//...
}
б) и использовать его (немного хитро): -)
SomeLoader loader = (SomeLoader) manager.<String[]>getLoader(ID);
Log.d(TAG, "isRunning: " + loader.isRunning);
Основная причина, по которой я разместил это здесь - достаточно сложный вызов универсального метода перед приведением Loader
к вашему SomeLoader
.
Напоминание
Что бы вы ни делали, если вы позвоните getSupportLoaderManager.restartLoader
, ваша текущая задача (если она выполняется) не будет убита. Поэтому следующим шагом будет вызов onCreateLoader
, который создаст новый Loader
. Таким образом, это означает, что у вас может быть 2,3,4,5 и более одинаковых задач, параллельных задач вместе (если вы не помешаете этому каким-либо образом), которые могут привести к разрядке батареи и превышению загрузки ЦП / сети.