FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Application and ActivityEvents improvements · NativeScript/NativeScript@304067f · GitHub

Commit 304067f

Browse files
vakrilov
committed
Application and ActivityEvents improvements
1 parent 4cf8a15 commit 304067f

7 files changed

Lines changed: 101 additions & 104 deletions

File tree

‎tests/app/application-tests.android.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ if (app.android) {
4141
export var testAndroidApplicationInitialized = function () {
4242
TKUnit.assert(app.android, "Android application not initialized.");
4343
TKUnit.assert(app.android.context, "Android context not initialized.");
44-
TKUnit.assert(app.android.foregroundActivity, "Android currentActivity not initialized.");
44+
TKUnit.assert(app.android.currentContext, "Android currentContext not initialized.");
45+
TKUnit.assert(app.android.foregroundActivity, "Android foregroundActivity not initialized.");
4546
TKUnit.assert(app.android.startActivity, "Android startActivity not initialized.");
4647
TKUnit.assert(app.android.nativeApp, "Android nativeApp not initialized.");
4748
TKUnit.assert(app.android.packageName, "Android packageName not initialized.");

‎tns-core-modules/application/application.android.ts‎

Lines changed: 35 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@ import frame = require("ui/frame");
44
import observable = require("data/observable");
55
import * as typesModule from "utils/types";
66
import * as enumsModule from "ui/enums";
7+
import { isNativeScriptActivity } from "ui/frame/activity";
78
let enums: typeof enumsModule;
89

910
global.moduleMerge(appModule, exports);
10-
var typedExports: typeof definition = exports;
11+
const typedExports: typeof definition = exports;
1112

1213
function initLifecycleCallbacks() {
1314
// TODO: Verify whether the logic for triggerring application-wide events based on Activity callbacks is working properly
1415
let lifecycleCallbacks = new android.app.Application.ActivityLifecycleCallbacks({
1516
onActivityCreated: function (activity: any, bundle: any) {
16-
1717
// Set app theme after launch screen was used during startup
1818
let activityInfo = activity.getPackageManager().getActivityInfo(activity.getComponentName(), android.content.pm.PackageManager.GET_META_DATA);
1919
if (activityInfo.metaData) {
@@ -25,38 +25,20 @@ function initLifecycleCallbacks() {
2525

2626
if (!androidApp.startActivity) {
2727
androidApp.startActivity = activity;
28-
androidApp.notify(<definition.AndroidActivityBundleEventData>{ eventName: "activityCreated", object: androidApp, activity: activity, bundle: bundle });
29-
30-
if (androidApp.onActivityCreated) {
31-
androidApp.onActivityCreated(activity, bundle);
32-
}
3328
}
3429

35-
androidApp.currentContext = activity;
30+
androidApp.notify(<definition.AndroidActivityBundleEventData>{ eventName: "activityCreated", object: androidApp, activity: activity, bundle: bundle });
31+
if (androidApp.onActivityCreated) {
32+
androidApp.onActivityCreated(activity, bundle);
33+
}
3634
},
3735

3836
onActivityDestroyed: function (activity: any) {
39-
// Clear the current activity reference to prevent leak
40-
if (activity === androidApp.foregroundActivity) {
41-
androidApp.foregroundActivity = undefined;
42-
}
43-
44-
if (activity === androidApp.currentContext) {
45-
androidApp.currentContext = undefined;
46-
}
47-
4837
if (activity === androidApp.startActivity) {
49-
if (typedExports.onExit) {
50-
typedExports.onExit();
51-
}
52-
53-
typedExports.notify(<definition.ApplicationEventData>{ eventName: typedExports.exitEvent, object: androidApp, android: activity });
54-
5538
androidApp.startActivity = undefined;
5639
}
5740

5841
androidApp.notify(<definition.AndroidActivityEventData>{ eventName: "activityDestroyed", object: androidApp, activity: activity });
59-
6042
if (androidApp.onActivityDestroyed) {
6143
androidApp.onActivityDestroyed(activity);
6244
}
@@ -66,35 +48,38 @@ function initLifecycleCallbacks() {
6648
},
6749

6850
onActivityPaused: function (activity: any) {
69-
androidApp.paused = true;
70-
7151
if (activity === androidApp.foregroundActivity) {
52+
androidApp.foregroundActivity = undefined;
53+
}
54+
55+
if (isNativeScriptActivity(activity)) {
56+
androidApp.paused = true;
57+
7258
if (typedExports.onSuspend) {
7359
typedExports.onSuspend();
7460
}
75-
7661
typedExports.notify(<definition.ApplicationEventData>{ eventName: typedExports.suspendEvent, object: androidApp, android: activity });
7762
}
7863

7964
androidApp.notify(<definition.AndroidActivityEventData>{ eventName: "activityPaused", object: androidApp, activity: activity });
80-
8165
if (androidApp.onActivityPaused) {
8266
androidApp.onActivityPaused(activity);
8367
}
8468
},
8569

8670
onActivityResumed: function (activity: any) {
87-
androidApp.paused = false;
8871
androidApp.foregroundActivity = activity;
8972

90-
if (typedExports.onResume) {
91-
typedExports.onResume();
92-
}
73+
if (isNativeScriptActivity(activity)) {
74+
if (typedExports.onResume) {
75+
typedExports.onResume();
76+
}
77+
typedExports.notify(<definition.ApplicationEventData>{ eventName: typedExports.resumeEvent, object: androidApp, android: activity });
9378

94-
typedExports.notify(<definition.ApplicationEventData>{ eventName: typedExports.resumeEvent, object: androidApp, android: activity });
79+
androidApp.paused = false;
80+
}
9581

9682
androidApp.notify(<definition.AndroidActivityEventData>{ eventName: "activityResumed", object: androidApp, activity: activity });
97-
9883
if (androidApp.onActivityResumed) {
9984
androidApp.onActivityResumed(activity);
10085
}
@@ -109,18 +94,14 @@ function initLifecycleCallbacks() {
10994
},
11095

11196
onActivityStarted: function (activity: any) {
112-
androidApp.foregroundActivity = activity;
113-
11497
androidApp.notify(<definition.AndroidActivityEventData>{ eventName: "activityStarted", object: androidApp, activity: activity });
115-
11698
if (androidApp.onActivityStarted) {
11799
androidApp.onActivityStarted(activity);
118100
}
119101
},
120102

121103
onActivityStopped: function (activity: any) {
122104
androidApp.notify(<definition.AndroidActivityEventData>{ eventName: "activityStopped", object: androidApp, activity: activity });
123-
124105
if (androidApp.onActivityStopped) {
125106
androidApp.onActivityStopped(activity);
126107
}
@@ -195,12 +176,15 @@ export class AndroidApplication extends observable.Observable implements definit
195176
public paused: boolean;
196177
public nativeApp: android.app.Application;
197178
public context: android.content.Context;
198-
public currentContext: android.content.Context;
199179
public foregroundActivity: android.app.Activity;
200180
public startActivity: android.app.Activity;
201181
public packageName: string;
202182
public hasActionBar: boolean;
203183

184+
public get currentContext(): android.content.Context {
185+
return this.foregroundActivity;
186+
}
187+
204188
public onActivityCreated: (activity: android.app.Activity, bundle: android.os.Bundle) => void;
205189

206190
public onActivityDestroyed: (activity: android.app.Activity) => void;
@@ -219,7 +203,7 @@ export class AndroidApplication extends observable.Observable implements definit
219203

220204
public init(nativeApp: any) {
221205
if (this.nativeApp) {
222-
throw new Error("application.android already initialized.")
206+
throw new Error("application.android already initialized.");
223207
}
224208

225209
this.nativeApp = nativeApp;
@@ -238,10 +222,10 @@ export class AndroidApplication extends observable.Observable implements definit
238222
private _pendingReceiverRegistrations = new Array<(context: android.content.Context) => void>();
239223
private _registerPendingReceivers() {
240224
if (this._pendingReceiverRegistrations) {
241-
var i = 0;
242-
var length = this._pendingReceiverRegistrations.length;
225+
let i = 0;
226+
const length = this._pendingReceiverRegistrations.length;
243227
for (; i < length; i++) {
244-
var registerFunc = this._pendingReceiverRegistrations[i];
228+
const registerFunc = this._pendingReceiverRegistrations[i];
245229
registerFunc(this.context);
246230
}
247231
this._pendingReceiverRegistrations = new Array<(context: android.content.Context) => void>();
@@ -250,12 +234,12 @@ export class AndroidApplication extends observable.Observable implements definit
250234

251235
public registerBroadcastReceiver(intentFilter: string, onReceiveCallback: (context: android.content.Context, intent: android.content.Intent) => void) {
252236
ensureBroadCastReceiverClass();
253-
var that = this;
254-
var registerFunc = function (context: android.content.Context) {
255-
var receiver: android.content.BroadcastReceiver = new BroadcastReceiverClass(onReceiveCallback);
237+
const that = this;
238+
const registerFunc = function (context: android.content.Context) {
239+
const receiver: android.content.BroadcastReceiver = new BroadcastReceiverClass(onReceiveCallback);
256240
context.registerReceiver(receiver, new android.content.IntentFilter(intentFilter));
257241
that._registeredReceivers[intentFilter] = receiver;
258-
}
242+
};
259243

260244
if (this.context) {
261245
registerFunc(this.context);
@@ -266,7 +250,7 @@ export class AndroidApplication extends observable.Observable implements definit
266250
}
267251

268252
public unregisterBroadcastReceiver(intentFilter: string) {
269-
var receiver = this._registeredReceivers[intentFilter];
253+
const receiver = this._registeredReceivers[intentFilter];
270254
if (receiver) {
271255
this.context.unregisterReceiver(receiver);
272256
this._registeredReceivers[intentFilter] = undefined;
@@ -350,15 +334,15 @@ global.__onLiveSync = function () {
350334
appModule.__onLiveSync();
351335

352336
loadCss();
353-
}
337+
};
354338

355339
global.__onUncaughtError = function (error: definition.NativeScriptError) {
356-
var types: typeof typesModule = require("utils/types");
340+
const types: typeof typesModule = require("utils/types");
357341

358342
// TODO: Obsolete this
359343
if (types.isFunction(typedExports.onUncaughtError)) {
360344
typedExports.onUncaughtError(error);
361345
}
362346

363347
typedExports.notify({ eventName: typedExports.uncaughtErrorEvent, object: appModule.android, android: error });
364-
}
348+
};

‎tns-core-modules/application/application.d.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -358,12 +358,12 @@ declare module "application" {
358358
foregroundActivity: any /* android.app.Activity */;
359359

360360
/**
361-
* The currently active (loaded) Context. This is typically the top-level Activity that is just created.
361+
* [Deprecated. Please use the respective event instead.] Please use foregroundActivity property.
362362
*/
363363
currentContext: any /* android.content.Context */;
364364

365365
/**
366-
* The main (start) Activity for the application.
366+
* [Deprecated. Please use foregroundActivity or activity related events instead.] The main (start) Activity for the application.
367367
*/
368368
startActivity: any /* android.app.Activity */;
369369

@@ -373,7 +373,7 @@ declare module "application" {
373373
packageName: string;
374374

375375
/**
376-
* True if the application is not running (suspended), false otherwise.
376+
* True if the main application activity is not running (suspended), false otherwise.
377377
*/
378378
paused: boolean;
379379

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL