Режим запуска SingleTask не работает - PullRequest
0 голосов
/ 26 мая 2018

Наличие этой странной проблемы создания нескольких экземпляров моей активности даже после указания launchMode как singleTask.Кто-нибудь сталкивался с этой проблемой?Любые указатели будут оценены.

Ниже показано, как я объявил свою активность в манифесте:

    <activity
    android:name="com.test.TestActivity"
        android:launchMode="singleTask">
     <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <action android:name="android.intent.action.SEND_MULTIPLE" />

                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="*/*" />
            </intent-filter>
</activity>

И вот как я запускаю свою активность, пока она еще на переднем плане:

Intent sendIntent = new Intent();
        sendIntent.setAction(Intent.ACTION_SEND);
        sendIntent.putExtra(Intent.EXTRA_TEXT, sharedText);
        sendIntent.setType("text/plain");
        activity.startActivity(Intent.createChooser(sendIntent, "Share"));

Версия Android, на которой я тестирую это 5.1.1

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Так что, похоже, проблема с устройством.На эмуляторе и других устройствах с одинаковой версией Android SingleTask работает просто отлично.

0 голосов
/ 26 мая 2018

Попробуйте использовать singleInstance , если хотите избавиться от нескольких экземпляров своей деятельности.

    <activity
        android:name=".MainActivity"
        android:launchMode="singleInstance">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

ДОПОЛНИТЕЛЬНОЕ ПРИМЕЧАНИЕ:

singleTask : - Новая задача всегда будет создаваться, а новый экземпляр будет помещен в задачу как корень.Однако, если какой-либо экземпляр действия существует в каких-либо задачах, система направляет намерение этому экземпляру действия через вызов метода onNewIntent ().В этом режиме экземпляры операций могут быть перенесены в одну и ту же задачу.Этот режим полезен для действий, которые выступают в качестве точек входа.

singleInstance : - То же, что и singleTask, за исключением того, что ни один экземпляр действий не может быть вставлен в одну и ту же задачу одного экземпляра.Соответственно, операция с режимом запуска всегда находится в одной задаче действия.Это очень специализированный режим и должен использоваться только в приложениях, которые полностью реализованы как одно действие.

Copied from : https://stackoverflow.com/a/36520016/3669559

...