问题
I set up an alarm to show a corresponding Notification
. The PendingIntent
of the Notification
is used to start the Gluon App main class. To show a View
other than the homeView, I call switchView(otherView)
in the postInit
method. OtherView is shown, but without AppBar
. While it's possible to make the AppBar
appear, I wonder if this is the right approach.
@Override
public void postInit(Scene scene) {
// additional setUp logic
boolean showReadingView = (boolean) PlatformProvider.getPlatform().getLaunchIntentExtra("showReadingView", false);
if (showReadingView) {
switchView(READING_VIEW);
}
}
回答1:
When triggering anything related to the JavaFX thread from another thread, we have to use Platform.runLater()
.
Yours is a clear case of this situation: the Android thread is calling some pending intent, and as a result, the app is started again.
This should be done:
@Override
public void postInit(Scene scene) {
// additional setUp logic
boolean showReadingView = (boolean) PlatformProvider.getPlatform().getLaunchIntentExtra("showReadingView", false);
if (showReadingView) {
Platform.runLater(() -> switchView(READING_VIEW));
}
}
来源:https://stackoverflow.com/questions/37912175/start-specific-view-of-gluon-app-from-a-notification