Android api request stuck after some time without action


#1

I’ve been working on an ionic app (ionic 1). Lately I’ve been experiencing a problem in my app.

When I talk about request it is about “API requests”.

I’m having this problem with my ionic app.

But the strange thing in my app is that you don’t even need to let the app sleep to stop the server or whatever the reason is from working. If you don’t touch the app for around 10 minutes, even when it is in foreground, the app requests stops working (on page change).

Another strange thing is that iOS works fine, but Android does not.

Config.xml:

<?xml version='1.0' encoding='utf-8'?>
<widget android-versionCode="" id="com.app.test" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>App</name>
    <description>
   App.
  </description>
    <author>Giovanni</author>
    <content src="index.html" />
    <allow-intent href="mailto:*" />
    <allow-intent href="*" />
    <allow-navigation href="*" />
    <allow-navigation href="file://*/*" />
    <preference name="webviewbounce" value="false" />
    <preference name="UIWebViewBounce" value="false" />
    <preference name="DisallowOverscroll" value="true" />
    <preference name="BackupWebStorage" value="none" />
    <preference name="KeepRunning" value="True" />
    <preference name="ShowTitle" value="True" />
    <preference name="AndroidPersistentFileLocation" value="Compatibility" />
    <preference name="InAppBrowserStorageEnabled" value="True" />
    <preference name="SuppressesIncrementalRendering" value="True" />
    <preference name="windows-target-version" value="10.0" />
    <preference name="SplashScreen" value="screen" />
    <preference name="FadeSplashScreenDuration" value="500" />
    <preference name="ShowSplashScreenSpinner" value="false" />
    <preference name="AutoHideSplashScreen" value="true" />
    <feature name="Device">
        <param name="ios-package" value="CDVDevice" />
    </feature>
    <feature name="Keyboard">
        <param name="ios-package" onload="true" value="IonicKeyboard" />
    </feature>
    <feature name="StatusBar">
        <param name="ios-package" onload="true" value="CDVStatusBar" />
    </feature>
    <platform name="android">
        <icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
        <icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
        <icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
        <icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
        <icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
        <icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
        <splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
        <splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />
        <splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />
        <splash density="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png" />
        <splash density="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png" />
        <splash density="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" />
        <splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />
        <splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />
        <splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />
        <splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
        <splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
        <splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
    </platform>
    <platform name="ios">
        <icon height="57" src="resources/ios/icon/icon.png" width="57" />
        <icon height="114" src="resources/ios/icon/icon@2x.png" width="114" />
        <icon height="40" src="resources/ios/icon/icon-40.png" width="40" />
        <icon height="80" src="resources/ios/icon/icon-40@2x.png" width="80" />
        <icon height="120" src="resources/ios/icon/icon-40@3x.png" width="120" />
        <icon height="50" src="resources/ios/icon/icon-50.png" width="50" />
        <icon height="100" src="resources/ios/icon/icon-50@2x.png" width="100" />
        <icon height="60" src="resources/ios/icon/icon-60.png" width="60" />
        <icon height="120" src="resources/ios/icon/icon-60@2x.png" width="120" />
        <icon height="180" src="resources/ios/icon/icon-60@3x.png" width="180" />
        <icon height="72" src="resources/ios/icon/icon-72.png" width="72" />
        <icon height="144" src="resources/ios/icon/icon-72@2x.png" width="144" />
        <icon height="76" src="resources/ios/icon/icon-76.png" width="76" />
        <icon height="152" src="resources/ios/icon/icon-76@2x.png" width="152" />
        <icon height="167" src="resources/ios/icon/icon-83.5@2x.png" width="167" />
        <icon height="29" src="resources/ios/icon/icon-small.png" width="29" />
        <icon height="58" src="resources/ios/icon/icon-small@2x.png" width="58" />
        <icon height="87" src="resources/ios/icon/icon-small@3x.png" width="87" />
        <splash height="1136" src="resources/ios/splash/Default-568h@2x~iphone.png" width="640" />
        <splash height="1334" src="resources/ios/splash/Default-667h.png" width="750" />
        <splash height="2208" src="resources/ios/splash/Default-736h.png" width="1242" />
        <splash height="1242" src="resources/ios/splash/Default-Landscape-736h.png" width="2208" />
        <splash height="1536" src="resources/ios/splash/Default-Landscape@2x~ipad.png" width="2048" />
        <splash height="768" src="resources/ios/splash/Default-Landscape~ipad.png" width="1024" />
        <splash height="2048" src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536" />
        <splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
        <splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640" />
        <splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
    </platform>
    <icon src="resources/android/icon/drawable-xhdpi-icon.png" />
    <preference name="android-minSdkVersion" value="16" />
    <engine name="android" spec="^6.4.0" />
    <engine name="windows" spec="4.4.2" />
    <engine name="ios" spec="^4.4.0" />
    <plugin name="cordova-plugin-app-event" spec="https://github.com/katzer/cordova-plugin-app-event.git" />
    <plugin name="cordova-plugin-app-version" spec="https://github.com/whiteoctober/cordova-plugin-app-version.git" />
    <plugin name="cordova-plugin-badge" spec="https://github.com/katzer/cordova-plugin-badge.git" />
    <plugin name="cordova-plugin-device" spec="~1.1.3" />
    <plugin name="cordova-plugin-device-name" spec="1.0.0" />
    <plugin name="cordova-plugin-inappbrowser" spec="1.2.1" />
    <plugin name="cordova-plugin-network-information" spec="1.2.1" />
    <plugin name="cordova-plugin-splashscreen" spec="3.2.2" />
    <plugin name="cordova-plugin-statusbar" spec="2.1.3" />
    <plugin name="cordova-plugin-whitelist" spec="~1.2.1" />
    <plugin name="cordova-plugin-x-socialsharing" spec="5.1.1" />
    <plugin name="cordova-plugin-fcm" spec="^2.1.2" />
    <plugin name="cordova-plugin-console" spec="^1.0.7" />
    <plugin name="ionic-plugin-keyboard" spec="^2.2.1" />
    <plugin name="cordova-plugin-file-transfer" spec="^1.7.0" />
    <plugin name="cordova-plugin-file" spec="^5.0.0" />
</widget>

And my ‘on resume’ and ‘on sleep’ listeners:

$ionicPlatform.on('resume', () => {
            // Do sweet stuff!
            if (ionic.Platform.isIOS()) {
                var $cordovaBadge = $injector.get('$cordovaBadge');
                $cordovaBadge.get().then(function (badgeCount) {
                    var badge = $injector.get('badge');
                    badge.set(badgeCount);
                }, function (err) {
                    // You do not have permission.
                });
            }
            else {
                var badge = $injector.get('badge');
                var KandidaatOpdrachten = $injector.get('KandidaatOpdrachten');

                if (storage.get('kandidaat') !== null) {
                    KandidaatOpdrachten.getBadgeCount().success(function (count) {
                        badge.set(count);
                    })
                }
                else {
                    badge.set(0);
                }
            }

            //window.location.reload();
        });

        $ionicPlatform.on('pause', () => {

        })

Version information:

cordova: 7.1.0
cordova-android: 6.4.0
cordova-ios: 4.4.0
EDIT

It seems that this problem only occurs on android. I’ve tested it on iOS and it works smoothly.

Any suggestions?