我有一个应用程序,如果从另一个应用程序启动(例如通过Play商店),它会出现异常行为。它不会恢复到已存在的Activity
,而是作为新实例重新启动。
我的解决方案:
- 在
manifest.xml
中使用launchMode="singleTop"
声明每个活动 - 我尝试使用
launchMode=singleTask
,但其具有相同的行为 - 在每个启动新
Activity
的Intent
上使用附加的intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
onNewIntent()
未在已运行的实例中调用
我使用以下代码从另一个应用程序(带和不带额外的addFlag()
)启动我的应用程序:
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("my.package.name");
launchIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(launchIntent);
我的启动活动是一个SplashScreenActivity
,如果用户已登录,则使用以下代码启动MainActivity
并完成finished()
Intent intent = null;
intent = new Intent(SplashScreenActivity.this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
finish();
我有什么遗漏吗?欢迎任何建议!
launchMode=singleTask
和singleInstance
,但是行为仍然保持不变..... - longi