0

My native Android app has multiple instances on some phones (Samsung galaxy note 2 – android 5.0 Samsung galaxy note 4 – android xx Xiaomi Redmi 4x – android 7.1.2.). On most other phones it is ok. The app consumes quite a lot of memory and CPU so I can not have the multiple instances running, otherwise it is very slow.

I tried to use android:launchMode="singleInstance" in my Manifest in every Activity. But this is not helping. I attache the Manifest file and screenshot.

I would be very happy if you could help me. Cheers.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="pekostudio.dogtrace">

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

<uses-feature android:name="android.hardware.location.gps" />
<uses-feature android:name="android.hardware.bluetooth_le" />

<application
    android:allowBackup="true"
    android:hardwareAccelerated="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:roundIcon="@mipmap/ic_launcher"
    android:supportsRtl="true"
    android:launchMode="singleInstance"
    android:resizeableActivity="false"
    android:theme="@style/AppTheme">

    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/google_maps_key" />

    <receiver
        android:name=".Bluetooth.GetAllCollarsService$GetRawBluetoothDataReceiver"
        android:enabled="true">
        <intent-filter>
            <action android:name="pekostudio.dogtrace.BLUETOOTH_RAW_DATA" />
        </intent-filter>
    </receiver>

    <service
        android:name=".Utils.LocationFinder"
        android:exported="false" />
    <service
        android:name=".Bluetooth.GetAllCollarsService"
        android:exported="false" />

    <service
        android:name=".Bluetooth.BluetoothLeService"
        android:enabled="true"
        android:stopWithTask="true" />

    <service
        android:name=".MapDownload.DownloadService"
        android:enabled="true"
        android:exported="true" />

    <activity
        android:name=".Activities.GoogleMapActivity"
        android:configChanges="orientation"
        android:label="@string/app_name"
        android:launchMode="singleInstance"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar" />

    <activity
        android:name=".Activities.SplashActivity"
        android:configChanges="orientation"
        android:screenOrientation="portrait"
        android:theme="@style/SplashTheme"
        android:launchMode="singleInstance">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".Activities.OfflineMap"
        android:configChanges="orientation"
        android:launchMode="singleInstance"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar" />

    <activity
        android:name=".Activities.CompassActivity"
        android:configChanges="orientation"
        android:launchMode="singleInstance"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar" />

    <activity
        android:name=".Activities.AnimalDetailActivity"
        android:configChanges="orientation"
        android:launchMode="singleInstance"
        android:parentActivityName=".Activities.GoogleMapActivity"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar"/>

    <activity
        android:name=".Activities.SettingsActivity"
        android:configChanges="orientation"
        android:launchMode="singleInstance"
        android:parentActivityName=".Activities.GoogleMapActivity"
        android:screenOrientation="portrait">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="pekostudio.dogtrace.Activities.GoogleMapActivity" />
    </activity>

    <activity
        android:name=".Activities.EditAnimalsActivity"
        android:configChanges="orientation"
        android:launchMode="singleInstance"
        android:screenOrientation="portrait" />

    <activity
        android:name=".Activities.EditAnimalActivity"
        android:configChanges="orientation"
        android:launchMode="singleInstance"
        android:screenOrientation="portrait" />

    <activity
        android:name=".Activities.DeviceScanActivity"
        android:configChanges="orientation"
        android:screenOrientation="portrait"
        android:launchMode="singleInstance"
        android:theme="@style/AppTheme.NoActionBar" />

    <activity android:name=".Activities.AvailableMapsListActivity"
        android:configChanges="orientation"
        android:launchMode="singleInstance"
        android:screenOrientation="portrait"/>

    <activity android:name=".Activities.AboutActivity"
        android:configChanges="orientation"
        android:launchMode="singleInstance"
        android:screenOrientation="portrait"/>

    <activity android:name=".Activities.CalibrateActivity"
        android:configChanges="orientation"
        android:launchMode="singleInstance"
        android:screenOrientation="portrait"/>

    <activity
        android:name=".Activities.MapMarkerPreview"
        android:configChanges="orientation"
        android:launchMode="singleInstance"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar" />

</application>

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
Petr Kott
  • 111
  • 7
  • if you want only single instance, is you tried removing `launchMode` from activitites. By default it start with single instance. – Aditya Jan 03 '18 at 16:15
  • 1
    "My native Android app has multiple instances on some phones" -- no, it does not. There may be multiple instances of activities within your app. Your screenshot is showing multiple tasks, not multiple instances of your app. `android:launchMode` [is not an available attribute on ``](https://developer.android.com/guide/topics/manifest/application-element.html). You need to determine where these multiple tasks are coming from (e.g., you starting activities with `FLAG_ACTIVITY_NEW_TASK`). – CommonsWare Jan 03 '18 at 16:16
  • thanks. CommonsWare, how can I determin it please? I do not use FLAG_ACTIVITY_NEW_TASK – Petr Kott Jan 03 '18 at 16:22
  • You were right @CommonsWare ! Thanks a lot! – Petr Kott Jan 05 '18 at 13:50

0 Answers0