0

I have a project setup with three flavors/variants. It originally was based on just one flavor, and later the latter two were added extra. The weird thing is that in the flavor (based on the original app) I can minimize the app, and reopen it without any issues. But when opening any intent or minimizing the app with the other flavours, the last activity is always destroyed from the stack.

At the moment I minimize, the onDestroy() of the activity gets called straight away.

This is how my manifest is built up:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="xxxxxxxxxxx">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <uses-feature android:name="android.hardware.camera" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_label"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.NoActionBar"
        android:usesCleartextTraffic="true">
        <activity
            android:name=".SubMenuActivity"
            android:exported="false"
            android:label="Submenu"
            android:parentActivityName=".WebActivity"
            android:theme="@style/Theme.AppCompat.DayNight.DarkActionBar"
            />
        <activity
            android:name=".login.LoginActivity"
            android:alwaysRetainTaskState="true"
            android:configChanges="orientation"
            android:label="@string/title_activity_login"
            android:launchMode="singleTop"
            android:noHistory="false"
            android:screenOrientation="portrait"
            android:exported="true">
            <intent-filter android:autoVerify="true">
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data
                    android:host="xxxxx"
                    android:pathPattern="xxxx"
                    android:scheme="https" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainActivity"
            android:alwaysRetainTaskState="true"
            android:configChanges="orientation"
            android:launchMode="singleTop"
            android:noHistory="false"
            android:screenOrientation="portrait"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".WebActivity"
            android:alwaysRetainTaskState="true"
            android:configChanges="orientation"
            android:launchMode="singleTop"
            android:noHistory="false"
            android:screenOrientation="portrait" />

        <service
            android:name=".MyFirebaseMessagingService"
            android:stopWithTask="false"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>
        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="@string/fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/fileprovider" />
        </provider> 
        <meta-data
            android:name="com.google.firebase.messaging.default_notification_icon"
            android:resource="@drawable/ic_action_name" />
        <meta-data
            android:name="com.google.firebase.messaging.default_notification_color"
            android:resource="@color/colorAccent" />
    </application>

</manifest>

And this is how (most of) my gradle.app looks like:

android {
    ..

    ..
    flavorDimensions "version"

    compileSdkVersion 31
    defaultConfig {
        applicationId "xxxxxx"
        minSdkVersion 26
        targetSdkVersion 31
        versionCode 203
        versionName "2.0.3"
        testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
    }

    productFlavors {
        janbarn {
            dimension "version"
            applicationIdSuffix ".flavor1"
        }
        shapeshifterzz {
            dimension "version"
            applicationIdSuffix ".flavor2"
        }
        dwleven {
            dimension "version"
            applicationIdSuffix ".flavor3"
        }
    }

    buildTypes {
        release {
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            productFlavors.flavor1.signingConfig signingConfigs.flavor1
            productFlavors.flavor2.signingConfig signingConfigs.flavor2
            productFlavors.flavor3.signingConfig signingConfigs.flavor3
        }
    }

    sourceSets {
        janbarn {
            res {
                srcDirs 'src/flavor1/res'
            }
            java {
                srcDirs 'src/flavor1/java'
            }
        }
        shapeshifterzz {
            res {
                srcDirs 'src/flavor2/res'
            }
            java {
                srcDirs 'src/flavor2/java'
            }
        }
        dwleven {
            res {
                srcDirs 'src/flavor3/res'
            }
            java {
                srcDirs 'src/flavor3/java'
            }
        }
    }

    compileOptions{
        sourceCompatibility JavaVersion.VERSION_11
        targetCompatibility JavaVersion.VERSION_11
    }
    lint {
        checkReleaseBuilds false
    }
    buildFeatures {
        viewBinding true
    }
}

I have anonymized some of the names since im running this project for a friend of mine.

I hope someone can help me with this one, might safe me some more hours of digging!

I have tried to use different launchmodes, tried the persistent state and alwaysRetainTaskState but nothing seems to help. And again in flavor1 there is no problem.

  • What is the problem? An activity can be killed at any moment by Android OS when it is not the top one. Prepare for it. Just as you prepare for rotating the device. – blackapps Nov 08 '22 at 23:31
  • Make sure that you did not enable "Don't keep activities" in Developer Options in the Settings app. – CommonsWare Nov 08 '22 at 23:42
  • Hi, thnx for the reply! I have tried this already. The weird thing us that the EXACT same app (flavor 1) does never have this issue while the others always do. So the problem is that when i open an intent or minimize the app, the activity im in will always get destroyed in flavor 2 and 3. But never in flavor 1 – Fons Molenaar Nov 09 '22 at 08:03
  • Or is there a way I could analyze this problem more precisely? – Fons Molenaar Nov 09 '22 at 08:19

0 Answers0