Итак.Я не получил журналы, потому что у меня не хватает времени, и я думаю, что я был ленивым.В любом случае я нахожу обходной путь для моей проблемы.
То, о чем я не упомянул, я запускаю сопрограмму StartCoroutine(waitForTask(task, uid, name, email));
внутри другой сопрограммы (это, конечно, внутри другой курутины).Так что у меня много куртизанок.И большинство из них ждали некоторого объекта из предыдущей функции и т. Д. И я использую некоторый счетчик внутри цикла while.например,
while(obj == null && wait > 0) {
wait--;
yield return new WaitForSceonds(1);
}
wait = 15;
//run next coroutine
и переменная ожидания часто была одной для нескольких сопрограмм.Итак, что я изменил:
- Я больше не жду объект, но для выполнения специального задания (например,
task.IsCompleted
) - Я изменил wait var на отметку времени.(например, я не хочу ждать, пока пользователь войдет в систему более 15 секунд)
Так что моей основной проблемы не было в коде, который я упомянул в вопросе.
Я обновлю свой ответ, когда найду время, чтобы изучить журналы Android и выяснить, почему сопрограммы сложены.
Вот пример с отметкой времени:
private IEnumerator SetUserNameToTheTop()
{
while (ux.GetCurrentUser() == null && (DateTime.Now - dataTime).TotalSeconds < 15)
{
pendingTxt.text = (DateTime.Now - dataTime).TotalSeconds.ToString();
Debug.Log("WAIT FOR ERROR");
yield return new WaitForSeconds(1);
}
if (ux.GetCurrentUser() != null && ux.GetCurrentUser().userName != "")
{
ActivateMenu();
}
else
{
PENDING_MSG = "USER WASN'T FOUND, TRY TO SIGN UP FIRST";
pendingTxt.text = PENDING_MSG;
isFailed = true;
FBButtons.SetActive(true);
}
}