Была похожая проблема с (совместимостью) фрагментов, в которых использование getActivity()
в ProgressDialog.show()
приводит к сбою. Я бы согласился, что это из-за времени.
Возможное исправление:
mContext = getApplicationContext();
if (mContext != null) {
mProgressDialog = ProgressDialog.show(mContext, "", getString(R.string.loading), true);
}
вместо использования
mProgressDialog = ProgressDialog.show(getApplicationContext(), "", getString(R.string.loading), true);
Поместите mContext как можно раньше, чтобы у него было больше времени для захвата контекста. До сих пор нет гарантии, что это сработает, просто снижает вероятность сбоя. Если это все еще не работает, вам придется прибегнуть к взлому таймера (что может вызвать другие проблемы с синхронизацией, такие как закрытие диалога позже).
Конечно, если вы можете использовать this
или ActivityName.this
, это более стабильно, потому что this
уже указывает на что-то. Но в некоторых случаях, например, с некоторыми архитектурами фрагментов, это не вариант.