@@ -88,9 +88,11 @@ public class BackgroundModeExt extends CordovaPlugin {
8888 private AlarmManager alarmMgr ;
8989 private PendingIntent alarmIntent ;
9090 final String RECEIVER = ".AlarmReceiver" ;
91- final int TIMEOUT = 240 * 1000 ; // 4 mins
91+ final int TIMEOUT = 180 * 1000 ; // 3 mins
92+ final int QUICK_TIMEOUT = 2 * 1000 ; // 2 secs
9293 final int WAKELIMIT = 2 ;
9394 private boolean isOnBg = false ;
95+ private int timeout = 0 ;
9496
9597 private class AlarmReceiver extends BroadcastReceiver {
9698 private PowerManager .WakeLock wakeLock = null ;
@@ -102,17 +104,12 @@ private class AlarmReceiver extends BroadcastReceiver {
102104
103105 @ Override
104106 public void onReceive (Context context , Intent intent ) {
105- if (isOnBg ()) {
106- PowerManager pm = (PowerManager )context .getSystemService (POWER_SERVICE );
107- WifiManager wm = (WifiManager )context .getSystemService (Context .WIFI_SERVICE );
107+ PowerManager pm = (PowerManager )context .getSystemService (POWER_SERVICE );
108+ WifiManager wm = (WifiManager )context .getSystemService (Context .WIFI_SERVICE );
108109
110+ timeout = TIMEOUT ;
111+ if (isOnBg ()) {
109112 if (++wakeCounter == WAKELIMIT ) {
110- getApp ().runOnUiThread (() -> {
111- View view = webView .getEngine ().getView ();
112- Log .d ("MlesAlarm" , "Updating visibility " + View .VISIBLE );
113- view .dispatchWindowVisibilityChanged (View .VISIBLE );
114- });
115-
116113 Log .d ("MlesAlarm" , "Acquiring locks" );
117114 if (null == wakeLock ) {
118115 wakeLock = pm .newWakeLock (
@@ -124,6 +121,12 @@ public void onReceive(Context context, Intent intent) {
124121 wfl .acquire ();
125122 }
126123
124+ getApp ().runOnUiThread (() -> {
125+ View view = webView .getEngine ().getView ();
126+ Log .d ("MlesAlarm" , "Updating visibility " + View .VISIBLE );
127+ view .dispatchWindowVisibilityChanged (View .VISIBLE );
128+ });
129+
127130 Log .d ("MlesAlarm" , "Calling resync" );
128131 webView .loadUrl ("javascript:syncReconnect()" );
129132
@@ -133,13 +136,15 @@ public void onReceive(Context context, Intent intent) {
133136 wakeLock .release ();
134137 wakeLock = null ;
135138
139+ wakeCounter = 0 ;
140+ timeout = QUICK_TIMEOUT ;
141+ }
142+ else if (1 == wakeCounter ) {
136143 getApp ().runOnUiThread (() -> {
137144 View view = webView .getEngine ().getView ();
138145 Log .d ("MlesAlarm" , "Updating visibility " + View .GONE );
139146 view .dispatchWindowVisibilityChanged (View .GONE );
140147 });
141-
142- wakeCounter = 0 ;
143148 }
144149 }
145150
@@ -148,9 +153,9 @@ public void onReceive(Context context, Intent intent) {
148153 Intent newIntent = new Intent (RECEIVER );
149154
150155 alarmIntent = PendingIntent .getBroadcast (context , 0 , newIntent , 0 );
151- Log .d ("MlesAlarm" , "Setting timeout " + TIMEOUT );
156+ Log .d ("MlesAlarm" , "Setting timeout " + timeout );
152157 alarmMgr .setExactAndAllowWhileIdle (AlarmManager .ELAPSED_REALTIME_WAKEUP ,
153- SystemClock .elapsedRealtime () + TIMEOUT , alarmIntent );
158+ SystemClock .elapsedRealtime () + timeout , alarmIntent );
154159
155160 }
156161 }
0 commit comments