WL 5.0.6.1 Android - Direct Update utrzymuje zasoby Native / Cordova aktywne / w pamięci (np. BusyIndicator), ale referencje są tracone
Mamy problem, gdy mamy następującą sekwencję:
Uruchamianie aplikacjiRozpoczynają się zasoby internetowePokaż wskaźnik zajętości (1)Połącz z serwerem WLZostanie uruchomiona aktualizacja bezpośredniaPonowne uruchomienie zasobów sieciowychPokaż wskaźnik zajętości (2)Połącz z serwerem WLPowodzenieZaładuj i zmień stronę powitalnąUkryj wskaźnik zajętości (2)Ma to taki skutek, że w bezpośrednio aktualizowanych zasobach internetowych (oczywiście) tracimy / brakuje odniesienia do wskaźnika zajętości (1) i nie jesteśmy w stanie ukryć tego wskaźnika po uruchomieniu bezpośredniej aktualizacji. Tak więc mamy dwa wskaźniki (1) (2) otwarte i tylko jeden (2) jest zamknięty, stary (1) jest na zawsze.
Jednym z rozwiązań byłoby uzyskanie zdarzenia, zanim bezpośrednia aktualizacja zostanie uruchomiona / wykonana ... tam moglibyśmy ukryć nasz wskaźnik (1). Stałoby się to bardzo podobne do tego pytania:IBM Worklight - Jak mogę wykonać kod JavaScript przed aktualizacją aplikacji?
Bardziej ogólnym podejściem byłoby uruchomienie „głębszego” ponownego uruchomienia aplikacji ... co oznacza również ponowne uruchomienie rodzimej powłoki i wszystkich zasobów cordova. Następnie wszystkie rodzime zasoby, takie jak wskaźnik zajętości i inne rzeczy, powinny zostać usunięte i zresetowane, prawda?
Czy jest jakiś sposób na osiągnięcie tak „głębokiego” ponownego uruchomienia aplikacji po bezpośredniej aktualizacji? Czy ten problem jest znany?
AKTUALIZACJA 5 września
Widzieliśmy, że następujące zdarzenia są uruchamiane przed ponownym uruchomieniem zasobów sieciowych przez DirectUpdate:
window.addEventListener("beforeunload",
function() {
WL.Logger.debug("busy test - unload2");
app.busytest.hide();
}
, false);
window.addEventListener("unload",
function() {
WL.Logger.debug("busy test - unload3");
app.busytest.hide();
}
, false);
... ale niestety ukrywanie naszego busytestu WL.BusyIndicator nie działa już w tych wydarzeniach. Czy ktoś ma jakieś pomysły?
Ale może w przypadku DirectUpdate można umieścić jakiś inny kod czyszczenia?