Поток транзакций Unity и Firebase захвачен - PullRequest
0 голосов
/ 08 февраля 2019

Я сейчас работаю с Firebase и Unity.У меня возникла проблема с зависанием потоков.Проблема не возникает при запуске в редакторе Unity, только при работе на устройстве Android.

У меня есть сцена с кнопкой.При нажатии кнопки происходит транзакция пожарной базы, и сцена изменяется.Я использовал Android Monitor для расследования и получаю дамп с такими строками, как: «IdleHandler выбросил исключение из firebase», «другой поток перехвачен; signum = 11», «основной поток перехвачен»

ниже:пример кода, который запускается при нажатии кнопки в графическом интерфейсе.

Похоже, это связано с этой проблемой на github: https://github.com/firebase/quickstart-unity/issues/181

public void on buttonPress()
{

        Firebase.FirebaseApp.LogLevel = Firebase.LogLevel.Debug;
        Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
        {
            var dependencyStatus = task.Result;
            if (dependencyStatus == Firebase.DependencyStatus.Available)
            {
                //transaction code
                return TransactionResult.Success(data);
            }
            else
            {
                UnityEngine.Debug.LogError(System.String.Format(
                  "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
                // Firebase Unity SDK is not safe to use here.
            }
        });


        // firebase code is running, now change scene 
        SceneManager.LoadScene("blah");
    }

1 Ответ

0 голосов
/ 08 февраля 2019

Переместить SceneManager.LoadScene ("бла");up

public void on buttonPress()
{

        Firebase.FirebaseApp.LogLevel = Firebase.LogLevel.Debug;
        Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
        {
            console.log('before if'); //log something here
            var dependencyStatus = task.Result;
            if (dependencyStatus == Firebase.DependencyStatus.Available)
            {
                //transaction code
                console.log('true')
                return TransactionResult.Success(data);
            }
            else
            {
                UnityEngine.Debug.LogError(System.String.Format(
                  "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
                // Firebase Unity SDK is not safe to use here.
            }
            // firebase code is running, now change scene 
            SceneManager.LoadScene("blah");
        });
}

Это означает, что следующая сцена не будет загружена, пока не завершится асинхронизация, и задача не будет названа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...