在我的应用程序中,我有:
-SplashScreen (SSc) 准备应用程序(启动服务等) -MainActivity (MA) 应用程序中处理大多数操作的最相关部分 - 以及一些其他不相关的活动
对于我的应用程序,我希望具有像 launchMode singleTask 这样的行为,以便我的应用程序始终作为新任务启动,即使通过 SMS/EMail 应用程序中的链接单击打开也是如此。最好只有一个我的活动实例,因为它们都是可连续导航的。
但是,当我将 SSc 作为 singleTask 启动时,它是堆栈的根目录并导航到 MainActivity,按 home,再次单击 Launcher 图标,应用程序将完全重新启动。所以 SSc 再次显示,依此类推。在这种情况下,我希望将 MainActivty 带到最前面。
我的愿望是:launcherclick -> SSc -> MA -> HOME -> launcherclick -> 将 MA 放在前面 -> HOME-> 从最近重新启动 -> 将 MA 放在前面
单击具有相同实例的链接-> SSc / MA(是否是首次启动)
在我的应用程序中,拥有多个实例是没有意义的,因为后台服务一次只处理一个 MainActivity,因为它经常轮询数据只是为了看到的“事物”。
您对实现这一目标有什么建议吗?
我的第一个想法是 LauncherActivity 与 launchMode singletask 没有布局来将意图路由到其他活动(很可能是 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>