To jest długa odpowiedź, szybka odpowiedź dla niecierpliwych jest to, aby pobrać ten sample code for displaying a splash page for an intensive startup task i sprawdzić, czy można go dostosować do sytuacji.
Moja odpowiedź zawiera ogólne informacje o funkcji stylu w języku JavaFX w stylu Preloader. W Twoim pytaniu wyraźnie wspomniano o korzystaniu z Preloader
w środowisku Eclipse i OSGI, ale nie będę bezpośrednio zajmował się tym scenariuszem, ponieważ nie korzystam z tych technologii. Mam nadzieję, że ogólne informacje będą nadal obowiązywały w twoim scenariuszu.
1. Java ma natywną obsługę wyświetlania strony powitalnej po uruchomieniu Java.
- Działa to za pomocą
-splash:<image>
VM switch.
Zalety i wady:
+
Najprostszym sposobem, aby uzyskać autonomiczną aplikację, aby pokazać obraz powitalny.
+
Może być wyświetlany bardzo szybko => jest to argument wejściowy do procesu VM, więc (prawdopodobnie) może być wyświetlony, nawet zanim sama VM zostanie w pełni zainicjalizowana.
-
ma ograniczone możliwości => tylko umożliwia wyświetlanie obrazu, a nie inne cechy, takie jak preloader raportowania postępów inicjalizacji, animacji, itp zalogować monity (chyba make use of AWT APIs)
-
nie będzie działać na wszystkich platformy do wersji Java 8 (patrz wydanie Mac: Impossible to use -splash: with JavaFX 2.2 and JDK 7).
2. Wstępnie ładowane mogą być używane do samodzielnych aplikacji.
Przykładowo w sekcji 9.3.4 Using a Preloader to Display the Application Initialization Progress
. Samouczek udostępnia wykonywalny przykładowy kod w klasach LongInitAppPreloader
i LongInitApp
(użyj nazw klas, które podaję w tej odpowiedzi, ponieważ jedna nazwa w tutorialu jest obecnie błędna).
Przykładowa autonomiczna aplikacja ma długi czas inicjalizacji, a niestandardowy Preloader
zapewnia informację zwrotną na temat postępu inicjowania. Próbka symuluje długą inicjalizację za pomocą połączenia Task z wywoływaniem Thread.sleep
, ale prawdziwą aplikacją byłoby np. Nawiązywanie połączeń sieciowych, pobieranie i analizowanie danych sieciowych oraz konfigurowanie początkowej aplikacji Scene.
Wstępne ładowanie nie jest specyficzne dla apletów i programu WebStart, ale jest głównie ukierunkowane na te typy wdrażania. Proces inicjowania apletu i WebStart jest bardziej złożony niż samodzielna inicjalizacja aplikacji, dlatego wiele dokumentacji Preloadera poświęcono bardziej złożonym scenariuszom.
3. Nie trzeba umieszczać Preloadera w oddzielnym pliku JAR.
Możesz umieścić Preloader
w tym samym JAR co twoja klasa Application. W przypadku dużych aplikacji dynamicznie wdrażanych i aktualizowanych przez protokoły ładowania sieciowego, takie jak WebStart, umieszczenie Preloader
w oddzielnym JAR ma sens. W przypadku autonomicznych aplikacji wykonujących inicjowanie oparte na sieci, prawdopodobnie nie robi to wielkiej różnicy i oddzielny etap pakowania może zostać pominięty, aby uprościć proces budowania i wdrażania.
4. Możesz osiągnąć funkcjonalność stylu Preloader bez użycia Preloadera.
Wiele (nie wszystkie) funkcji Preloader można uzyskać bez podklasy Preloader.
Można:
- Tworzenie uruchomienie Stage w start metody danej aplikacji.
- Umieść obraz powitalny i ProgressBar w fazie uruchamiania.
- Mieć tło task dla długich procesów inicjowania aplikacji.
- Powoduje zainicjowanie procesu inicjowania z powrotem do etapu uruchamiania z zadania w tle.
- Po zakończeniu inicjalizacji:
- a. Zastąp etap uruchamiania nowoutworzonym stadium aplikacji OR
- b. Zastąp zawartość sceny na etapie uruchamiania nową sceną dla aplikacji.
5b jest prawdopodobnie korzystne, dzięki czemu nie ma potrzeby tworzenia wielu okien.
Do przykładów tej strategii zobaczyć moje odpowiedzi na następujące pytania:
Odnośne przykładowy kod do wyświetlania Monitorowanie postępu ekranów powitalnych w JavaFX bez użycia Preloader
to:
Powyższy kod może być refactored użyć zamiast podklasy wstępnego ładowania, w którym to przypadku nie jest dobrze zdefiniowane ramy zgłoszenia zdarzeń inicjalizacji aplikacji i bardziej elastycznych wzorów rozmieszczenia (np preloader w oddzielnym słoiku) są dostępne. Jednak użycie numeru Preloader
może być nieco skomplikowane. W przypadku niektórych implementacji może nie być warta czasu na zrozumienie struktury Preloader
.
5. Aplikacje webstart mieć wsparcie JNLP dla Splash obrazy
(punkt ten jest całkiem bez znaczenia i po prostu włączone dla kompletności).
Wierzę, że webstart applications can have a flag in their jnlp file wyświetla obraz startowy, gdy uruchamia się aplikacja Webstart, ale nigdy nie udało mi się uzyskać tej flagi do pracy w aplikacji JavaFX 2, tylko w aplikacji Swing, a nawet wtedy nie było wszystko to, co godne zaufania, ponieważ wyświetlałoby się tylko przy drugim uruchomieniu aplikacji.
ktoś wsparcie? –