8.6 Released with 🥽 visionOS support and more!
Check it out

The Application class provides the wrapper around android.app.Application for Android and UIApplication for iOS. With this class you handle the app's lifecycle events, send Broadcasts on Android or add a Notification observer on IOS, etc.

Use Application class

Register a broadcast receiver

To register a broadcast receiver, you follow these 3 steps:

  1. Import the Application class from @nativescript/core.

    ts
    import { Application, isAndroid } from '@nativescript/core'
  2. Get the wrapper object for android.app.Application instance. Use the android property to get the wrapper around android.app.Application.

    ts
    const androidApp: AndroidApplication = Application.android
  3. Call the registerBroadcastReceiver method. Call the registerBroadcastReceiver method on androidApp.

    ts
    androidApp.registerBroadcastReceiver()

For a complete example that shows how to register a broadcast receiver with a custom intent filter, visit the following link:

For system intent filters, see Standard Broadcast Actions.

Unregister a broadcast receiver

To unregister a broadcast receiver, call the unregisterBroadcastReceiver on the wrapper around an android.app.Application passing it the intent filter for which to unregister the broacast receiver. The example below unregisters a broadcast receiver for the android.content.Intent.ACTION_BATTERY_CHANGED intent filter.

ts
import { Application, isAndroid } from '@nativescript/core'
if (isAndroid) {
  const androidApp: AndroidApplication = Application.android

  androidApp.unregisterBroadcastReceiver(
    android.content.Intent.ACTION_BATTERY_CHANGED
  )
}

Add a notification observer

To add an iOS notification observer, follow the steps below:

  1. Import the Application class from @nativescript/core.

    ts
    import { Application, isIOS } from '@nativescript/core'
  2. Get the wrapper object for UIApplication instance.

    ts
    const iOSApp: iOSApplication = Application.ios
  3. Call the addNotificationObserver method. Call the addNotificationObserver passing it the name of the notification(NSNotificationName) you would like to observe as the first parameter and as a second parameter, a callback function to be called when that notification occurs.

    ts
    const observer: any = iOSApp.addNotificationObserver(
      UIDeviceOrientationDidChangeNotification,
      (notification: NSNotification) => {
        //Handle the notification
      }
    )

Find the complete example here

Remove a notification observer

To remove a notification observer, use the removeNotificationObserver method on a Application.ios reference the observer id, returned by the addNotificationObserver as the first argument and the name of the notification to stop observing.

ts
iOSApp.removeNotificationObserver(
  observer,
  UIDeviceBatteryStateDidChangeNotification
)

Cross platform application events

This class allows you to listen to the following lifecycle events on both platforms.

ts
Application.on('orientationChanged', (args: ApplicationEventData) => {
  // handle the event
})
More events
  • livesync
  • cssChanged
  • launch
  • displayed
  • suspend
  • resume
  • exit
  • lowMemory
  • uncaughtError
  • discardedError
  • orientationChanged
  • systemAppearanceChanged
  • fontScaleChanged

getResources()

ts
resources: any = Application.getResources()

Gets application-level static resources.


setResources()

ts
Application.setResources(resources)

Sets application-level static resources.


setCssFileName()

ts
Application.setCssFileName(filePath)

Sets css file name for the application.


getCssFileName()

ts
cssFileName: string = Application.getCssFileName()

Gets css file name for the application.


loadAppCss()

ts
loadedCss: any = Applicatioin.loadAppCss()

Loads immediately the app.css. By default the app.css file is loaded shortly after "loaded". For the Android snapshot the CSS can be parsed during the snapshot generation, as the CSS does not depend on runtime APIs, and loadAppCss will be called explicitly.


addCss()

ts
Application.addCss(cssText, attributeScoped)

Adds new values to the application styles.

  • cssText - A valid CSS styles to be add to the current application styles.
  • Optional: attributeScoped - sets whether the styles are attribute scoped. Adding attribute scoped styles does not perform a full application styling refresh.

Android Reference

android

ts
androidApp: AndroidApplication = Application.android

The property gives you the AndroidApplication object, a Nativescript wrapper, around the native android application instance.


nativeApp

ts
nativeApp: android.app.Application = androidApp.nativeApp
// or
nativeApp: UIApplication = iOSApp.nativeApp

This is a native application reference.

For Android, it is the android.app.Application instance keeping track of the global application state. From this object you can get methods such as getFilesDir(), onLowMemory(),etc.

For iOS, it returns the reference to a UIApplication instance for the application.


foregroundActivity

ts
foregroundActivity = androidApp.foregroundActivity

Gets the currently visible(topmost) android Activity.


startActivity

ts
startActivity = androidApp.startActivity

Gets the main (start) Activity for the application.


paused

ts
isSuspended: boolean = androidApp.paused

Returns true if the main application activity is not running (suspended), otherwise false is returned.


backgrounded

ts
isInBackground: boolean = androidApp.backgrounded

Returns true if the main application activity is in background


registerBroadcastReceiver

ts
receiver = androidApp.registerBroadcastReceiver(intentFilter, onReceiveCallback)

Registers a BroadcastReceiver to be run in the main activity thread. The receiver will be called with any broadcast Intent that matches the intent filter.

onReceiveCallback: a callback function that will be called each time a broadcast is received.


getRegisteredBroadcastReceiver

ts
androidApp.getRegisteredBroadcastReceiver(intentFilter)

Gets a registered BroadcastReceiver for the specified intent filter.


unregisterBroadcastReceiver

ts
androidApp.unregisterBroadcastReceiver(intentFilter)

Unregisters a previously registered BroadcastReceiver for the specified intent filter.


Android Activity lifecycles events

To handle the application lifecycle events for Android, use on method of the

ts
androidApp.on('activityResumed', (args) => {
  //handle the event here
})
More Android Activity lifecycles events
  • activityCreated
  • activityDestroyed
  • activityStarted
  • activityPaused
  • activityStopped
  • saveActivityState
  • activityResult
  • activityBackPressed
  • activityNewIntent
  • activityRequestPermissions

iOS Reference

ios

ts
iOSApp = Application.ios

The property gives you the iOSApplication object, Nativescript wrapper, the around the native iOS application instance.


rootController

ts
rootController: UIViewController = iOSApp.rootController

The root view controller for the iOS application.


window

This property gives the key window, the container for your app views and one of its roles is to deliver touch events to the views. Views are the user interface items such as button, label or scrollview.


delegate(iOS lifecycles events)

js
const MyDelegate = (function (_super) {
  __extends(MyDelegate, _super)
  function MyDelegate() {
    _super.apply(this, arguments)
  }
  MyDelegate.prototype.applicationDidFinishLaunchingWithOptions = function (
    application,
    launchOptions
  ) {
    console.log('applicationWillFinishLaunchingWithOptions: ' + launchOptions)
    return true
  }
  MyDelegate.prototype.applicationDidBecomeActive = function (application) {
    console.log('applicationDidBecomeActive: ' + application)
  }
  MyDelegate.ObjCProtocols = [UIApplicationDelegate]
  return MyDelegate
})(UIResponder)

Application.ios.delegate = MyDelegate
ts
@NativeClass()
class MyDelegate extends UIResponder implements UIApplicationDelegate {
  public static ObjCProtocols = [UIApplicationDelegate]

  applicationDidFinishLaunchingWithOptions(
    application: UIApplication,
    launchOptions: NSDictionary<string, any>
  ): boolean {
    console.log('applicationWillFinishLaunchingWithOptions: ' + launchOptions)

    return true
  }

  applicationDidBecomeActive(application: UIApplication): void {
    console.log('applicationDidBecomeActive: ' + application)
  }
}
Application.ios.delegate = MyDelegate

The iOS system monitors the different states of your application and emits an event at each state. To handle these lifecycle events, you have to write a class that extends UIResponder and implements UIApplicationDelegate classes and set the delegate property to that class. You then overwrite the methods from UIApplicationDelegate to handle the events.

For a complete list of the iOS lifecycle events, visit UIApplicationDelegate.


orientation

ts
orientation = androidApp.orientation
// or
orientation = iOSApp.orientation

Gets or sets the orientation of the application.
Possible values: portrait| landscape| unknown


systemAppearance

ts
systemAppearance = androidApp.systemAppearance
// or
systemAppearance = iOSApp.systemAppearance

Returns whether the system appearance is dark, light or null(for iOS <= 11).


References

API References

NameType
@nativescript/core/applicationModule

Native Component

AndroidiOS
android.app.ApplicationUIApplication