-
Notifications
You must be signed in to change notification settings - Fork 24
Android Headless Mode
Chris Scott edited this page Jun 27, 2018
·
7 revisions
BackgroundGeolocation implements the React Native Headless JS mechanism. With Headless JS, you can continue to respond to BackgroundGeolocation
events after your app has been terminated (assuming you've configured stopOnTerminate: false
).
Where you execute BackgroundGeolocation#configure
, add the following options:
export default class App extends Component {
componentDidMount() {
BackgroundGeolocation.ready({
enableHeadless: true,
stopOnTerminate: false, // <-- required for Headless JS
.
.
.
}, (state) => {
console.log('- Configure success');
});
In your application's app.js
file, register your Javascript Headless Task:
π index.js
import * as application from 'application';
import {BackgroundGeolocation} from "nativescript-background-geolocation-lt";
BackgroundGeolocation.registerHeadlessTask((event, completionHandler) => {
console.log('[My Headless Task: ', event.name, event.params);
// Do stuff.
completionHandler(); // <-- signal completion of your HeadlessTask
});
application.run({ moduleName: 'app-root' });
To test HeadlessJS, boot your app and connect the developer console. Terminate your app and observe console
messages arriving from your registered HeadlessTask
:
In $ adb logcat
, you'll see HeadlessTask
events prefixed with the "π" icon (as in dead / terminated). These "π" events are logged just before being sent to your HeadlessTask
:
$ adb logcat -s TSLocationManager
TSLocationManager: [c.t.r.HeadlessTask <init>] π event: terminate
TSLocationManager: [c.t.l.a.BackgroundGeolocation isMainActivityActive] NO
TSLocationManager: [c.t.r.HeadlessTask onHeadlessJsTaskStart] taskId: 1
TSLocationManager: [c.t.l.BackgroundGeolocationService onActivityRecognitionResult]
TSLocationManager: [c.t.r.HeadlessTask <init>] π event: activitychange
TSLocationManager: [c.t.l.a.BackgroundGeolocation isMainActivityActive] NO
TSLocationManager: [c.t.r.HeadlessTask onHeadlessJsTaskFinish] taskId: 1
TSLocationManager: [c.t.l.a.BackgroundGeolocation isMainActivityActive] NO
TSLocationManager: [c.t.l.BackgroundGeolocationService onActivityRecognitionResult]
TSLocationManager: [c.t.r.HeadlessTask <init>] π event: activitychange
TSLocationManager: [c.t.r.HeadlessTask onHeadlessJsTaskStart] taskId: 3
TSLocationManager: [c.t.l.a.BackgroundGeolocation isMainActivityActive] NO
TSLocationManager: [c.t.r.HeadlessTask onHeadlessJsTaskFinish] taskId: 3
TSLocationManager: [c.t.l.LocationService onHeartbeat] β€οΈ
TSLocationManager: [c.t.l.a.BackgroundGeolocation isMainActivityActive] NO
TSLocationManager: [c.t.r.HeadlessTask <init>] π event: heartbeat