).
тветствии сдокументыДействия SingleTask не могут иметь несколько экземпляров. Единственное действие моего приложения - это singleTask, и оно имеет 2 экземпляра одновременно.
Шаги, чтобы воссоздать проблемуШаг 1Создайте новый проект в Android Studio 3.3.1, Add No Activity, назовите его singleTaskBug, (пакетcom.example.singletaskbug
), используя язык Java с минимальным уровнем API 21 без поддержки мгновенных приложений.
Добавить новое действие вручную, отредактировавAndroidManifest.xml
затем создать новый класс Java вapp
⯈ java
⯈ com.example.singletaskbug
названныйLauncherActivity
.
СодержаниеAndroidManifest.xml
:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".LauncherActivity"
android:excludeFromRecents="true"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
СодержаниеLauncherActivity.java
:
package com.example.singletaskbug;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.Log;
public class LauncherActivity extends Activity {
static int instanceCounter = 0;
final int instanceId;
final String TAG = "STB";
public LauncherActivity() {
instanceId = ++instanceCounter;
Log.d(TAG, "Constructed instance " + instanceId + ".");
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "Created instance " + instanceId + ".");
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Log.d(TAG, "New intent to instance " + instanceId + ".");
}
@Override
protected void onDestroy() {
Log.d(TAG, "Destroyed instance " + instanceId + ".");
super.onDestroy();
}
}
Шаг 3Перейти кRun
⯈ Edit Configurations...
и вLaunch Options
набор разделовLaunch:
вSpecified Activity
, а такжеActivity:
com.example.singletaskbug.LauncherActivity
затем нажмитеOK
, а такжеRun 'app'
сдвигF10.
Подождите, пока активность не станет видимой. Теперь на тестовом устройстве (API 21 в моем случае), перейдите в настройки, чтобы установить это приложение в качестве панели запуска по умолчанию. Затем нажмите кнопку домой. На данный момент вы увидите это в Logcat:
02-15 17:22:01.906 26429-26429/com.example.singletaskbug D/STB: Constructed instance 1.
02-15 17:22:01.916 26429-26429/com.example.singletaskbug D/STB: Created instance 1.
02-15 17:22:24.228 26429-26429/com.example.singletaskbug D/STB: Constructed instance 2.
02-15 17:22:24.248 26429-26429/com.example.singletaskbug D/STB: Created instance 2.