Как сделать Titanium.Network.createHTTPClient асинхронным - PullRequest
0 голосов
/ 16 апреля 2020

Мое приложение замедляется, когда я пытаюсь сделать вызов Titanium.Network.createHTTPClient, хотя я делаю вызов в Alloy. js и веб-служба не зависит от экрана в качестве фонового вызова.

Alloy.Globals.xhr = Titanium.Network.createHTTPClient({
    async: true,
    onerror : function(e) {

     },
     timeout : 9000  // in milliseconds
});

Мой экран останавливается, пока я не получу ответ. Как вызвать сервис в фоновом режиме, не влияя на производительность экрана / приложения

Ti SDK : 8.3.1.GA
Axway Appcelerator Studio, 
build: 5.1.4.201909061933

Android Platform - Not working

iOS Platform - working

1 Ответ

0 голосов
/ 17 апреля 2020

Как указано в документации:

By default, the HTTPClient makes asynchronous requests. Asynchronous requests do not block the application and use callbacks to process responses when they are received.

Synchronous requests block the execution of the application until it receives a response. On the iOS platform, you can make synchronous requests by setting the optional async parameter to false when calling the open method.

The Android platform does not support synchronous requests.

Для конструктора нет параметра async, только внутри метода open() для iOS: http://docs.appcelerator.com/platform/latest/#! / api / Titanium.Network.HTTPClient-method-open (необязательный третий параметр).

Таким образом, http-запрос может не быть источником для замедления.

То, что вы можете попробовать, это переместить часть HTTPClient из глобального пространства в библиотеку или в сам контроллер (для целей тестирования). Я использую его в приложении Podcatcher без блокировки интерфейса и загружаю несколько файлов без блокировки интерфейса.

...