Skip to content

Commit b8530a6

Browse files
authored
Merge pull request #435 from richturner/master
CB-13975: (android) Fix to fire pause event when cdvStartInBackground=true
2 parents 8368654 + b1551ca commit b8530a6

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

framework/src/org/apache/cordova/CoreAndroid.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public class CoreAndroid extends CordovaPlugin {
4343
private BroadcastReceiver telephonyReceiver;
4444
private CallbackContext messageChannel;
4545
private PluginResult pendingResume;
46+
private PluginResult pendingPause;
4647
private final Object messageChannelLock = new Object();
4748

4849
/**
@@ -113,6 +114,10 @@ else if (action.equals("exitApp")) {
113114
else if (action.equals("messageChannel")) {
114115
synchronized(messageChannelLock) {
115116
messageChannel = callbackContext;
117+
if (pendingPause != null) {
118+
sendEventMessage(pendingPause);
119+
pendingPause = null;
120+
}
116121
if (pendingResume != null) {
117122
sendEventMessage(pendingResume);
118123
pendingResume = null;
@@ -321,7 +326,19 @@ private void sendEventMessage(String action) {
321326
} catch (JSONException e) {
322327
LOG.e(TAG, "Failed to create event message", e);
323328
}
324-
sendEventMessage(new PluginResult(PluginResult.Status.OK, obj));
329+
PluginResult result = new PluginResult(PluginResult.Status.OK, obj);
330+
331+
if (messageChannel == null) {
332+
LOG.i(TAG, "Request to send event before messageChannel initialised: " + action);
333+
if ("pause".equals(action)) {
334+
pendingPause = result;
335+
} else if ("resume".equals(action)) {
336+
// When starting normally onPause then onResume is called
337+
pendingPause = null;
338+
}
339+
} else {
340+
sendEventMessage(result);
341+
}
325342
}
326343

327344
private void sendEventMessage(PluginResult payload) {

0 commit comments

Comments
 (0)