В моем приложении у меня есть:
-SplashScreen (SSc) подготовка приложения (запуск служб и т. д.) -MainActivity (MA) наиболее важная часть приложения, обрабатывающая большинство действий -и некоторые другие действия, которые не так важны
Для моего приложения я хотел бы иметь поведение, подобное launchMode singleTask, чтобы мое приложение всегда запускалось как новая задача, даже при открытии по ссылке в приложении SMS/EMail. Лучше всего иметь только один экземпляр моих действий, поскольку все они последовательно доступны.
Однако, когда я запускаю SSc как singleTask, это корень стека, и я перехожу к MainActivity, нажимаю домой, снова щелкаю значок Launcher, приложение полностью перезапускается. Итак, SSc снова показывается и так далее. В этой ситуации я бы хотел, чтобы MainActivty вместо этого была выведена на передний план.
мое желание было бы: launcherclick -> SSc -> MA -> HOME -> launcherclick -> вывести MA на передний план -> HOME-> перезапустить из недавних -> вывести MA на передний план
Нажмите на ссылку ->SSc/MA (будь то первый запуск) с теми же экземплярами
В моем приложении нет смысла иметь несколько экземпляров, поскольку фоновая служба обрабатывает только одну MainActivity за раз, потому что она часто опрашивает данные только для видимой вещи.
Есть ли у вас какие-либо рекомендации для достижения этой цели?
моей первой идеей была LauncherActivity с одиночной задачей launchMode без макета для маршрутизации намерений к другим действиям (которые, скорее всего, будут singleTop !?, потому что тогда это только в одной задаче), например:
public class LauncherActivity extends Activity {
private boolean firstStart = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onResume() {
super.onResume();
if(firstStart){
startActivity(new Intent(this, SplashScreen.class));
firstStart = false;
} else {
Intent i = new Intent(this, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(i);
}
}
}
XML-файл манифеста:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="x.startintenttest">
<application
android:allowBackup="true"
android:allowTaskReparenting="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
<activity
android:name="x.startintenttest.MainActivity"
android:label="@string/app_name"
android:launchMode="singleTop"></activity>
<activity
android:name="x.startintenttest.MainActivity2"
android:label="@string/title_activity_main_activity2"></activity>
<activity
android:name="x.startintenttest.SplashScreen"
android:label="@string/title_activity_splash_screen"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="*.xyz.de"
android:pathPattern="/...-........."
android:scheme="https" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>