This chapter describes the lifecycle listeners that MAF provides for you to write code that can execute in response to events in your MAF application or application features.
This chapter includes the following sections:
Section 11.1, "Introduction to Lifecycle Listeners in MAF Applications"
Section 11.2, "Registering a Lifecycle Listener for a MAF Application or an Application Feature"
Section 11.3, "What Happens When You Register a Lifecycle Listener"
Lifecycle listeners are useful locations to write code that executes in response to specific events in your application. MAF provides lifecycle listeners where you can write code in response to application or application feature events. A typical implementation of an application lifecycle listener method may be to write code that initializes your application's database when the application starts, as described in Section 17.2, "Using the Local SQLite Database," or to update a security configuration from URL parameters, as described in Section 29.4.7, "How to Update Connection Attributes of a Named Connection at Runtime."
MAF provides the following two interfaces that you can implement to communicate with event notifications:
oracle.adfmf.application.LifeCycleListener
This interface specifies the following methods that an application lifecycle listener must implement:
activate()
deactivate()
start()
stop()
oracle.adfmf.feature.LifeCycleListener
This interface specifies the following methods that a feature lifecycle listener must implement:
activate()
deactivate()
You create a lifecycle listener by creating a Java class that implements the appropriate interface and registering the implementation in your MAF application, as described in Section 11.2, "Registering a Lifecycle Listener for a MAF Application or an Application Feature."
A new MAF application that you create implements the oracle.adfmf.application.LifeCycleListener
interface through the default creation of the application.LifeCycleListenerImpl.java
class in your application's ApplicationController project, as shown in Figure 11-1.
Note that the application lifecycle listener is executed with an anonymous user (that is, there is no user associated with any of its methods and no secure web service is called).
Table 11-1 describes the specific times that MAF invokes application lifecycle methods during an application's startup, shutdown, and hibernation.
Table 11-1 Timing of MAF's Invocation of Application Lifecycle Methods
Method | Timing | When Called | Usage |
---|---|---|---|
|
Called after the MAF application has completely loaded the application features and immediately before presenting the user with the initial application feature or the springboard. This is a blocking call. |
When the application process starts. |
Uses include:
|
|
Called as the MAF application begins its shutdown. |
When the application process terminates. |
Uses include:
|
|
Called as the MAF application activates from being situated in the background (hibernating). This is a blocking call. |
After the |
Uses include:
|
|
Called as the MAF application deactivates and moves into the background (hibernating). This is a blocking call. |
Before the |
Uses include:
|
Table 11-2 describes the specific times that MAF invokes feature lifecycle methods during a feature's activation and deactivation.
Table 11-2 Timing of MAF's Invocation of Feature Lifecycle Methods
Method | Timing | When Called | Usage |
---|---|---|---|
|
Called before the current application feature is activated. |
Called when a user selects the application feature for the first time after launching a MAF application, or when the application has been re-selected (that is, brought back to the foreground). |
Uses include:
|
|
Called before the next application feature is activated, or before the application feature exits. |
Called when the user selects another application feature. |
You can, for example, use the |
For more information about the oracle.adfmf.application.LifeCycleListener
and oracle.adfmf.feature.LifeCycleListener
interfaces, see the Oracle Fusion Middleware Java API Reference for Oracle Mobile Application Framework.
The LifecycleEvents sample application demonstrates declaring listener classes that implement both the application and feature interfaces and registers them in the MAF application's maf-application.xml
and maf-feature.xml
files. This sample application is in the PublicSamples.zip
file at the following location within the JDeveloper installation directory of your development computer:
jdev_install\jdeveloper\jdev\extensions\oracle.maf\Samples
For more information about the sample applications, see Appendix G, "MAF Sample Applications."
You register an application lifecycle listener using the overview editor for the maf-application.xml
file and a feature lifecycle listener using the overview editor for the maf-features.xml
file.
To register an application lifecycle listener:
In the Applications window, expand the Application Resources panel.
In the Application Resources panel, expand Descriptors and then ADF META-INF.
Double-click maf-application.xml.
In the Application navigation tab, specify the Java class that implements the oracle.adfmf.application.LifeCycleListener
interface in the Lifecycle Event Listener field. By default, this is set to application.LifeCycleListenerImpl
.
A scenario where you might use a custom class different to the default implementation provided by MAF is if you want to package the application lifecycle listener in a JAR library that will be distributed for use elsewhere.
To register an application feature lifecycle listener:
In the Applications window, expand the ViewController project and then Application Sources and META-INF.
Double-click the maf-feature.xml file.
Select the feature in the Features list for which you want to register a feature lifecycle listener.
In the Lifecycle Event Listener field, specify the Java class that implements the oracle.adfmf.feature.LifeCycleListener
interface.
By default, a MAF application that you create implements an application lifecycle listener through the creation of the application.LifeCycleListenerImpl.java
class in your application's ApplicationController project. The listener-class
attribute in the maf-application.xml
file registers this class, as shown in Example 11-1.
Example 11-1 Registration of an Application Lifecycle Listener in maf-application.xml
<adfmf:application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:adfmf="http://xmlns.oracle.com/adf/mf" version="1.0" name="NewMAFapp" id="com.company.NewMAFapp" appControllerFolder="ApplicationController" listener-class="application.LifeCycleListenerImpl"> ... </adfmf:application>
JDeveloper writes an entry to the maf-feature.xml
file for the listener-class
attribute when you register a feature lifecycle listener. Example 11-2 shows an entry in the LifecycleEvents sample application described in Appendix G, "MAF Sample Applications."
Example 11-2 Registration of an Application Feature Lifecycle Listener in maf-feature.xml
<?xml version="1.0" encoding="UTF-8" ?> <adfmf:features xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:adfmf="http://xmlns.oracle.com/adf/mf"> <adfmf:feature id="Feature1" name="Feature1" listener-class="mobile.Feature1Handler"> <adfmf:description>This is a sample feature to show the feature lifecycle handlers. </adfmf:description> <adfmf:content id="Feature1.1"> <adfmf:amx file="Feature1/feature1.amx"/> </adfmf:content> </adfmf:feature> ... </adfmf:features>