我有一个应用程序,如果从另一个应用程序启动(例如在Playstore上),则会出现异常.它不是恢复到已经存在的Activity,而是作为新实例重新启动.

我有的:

>在manifest.xml中使用launchMode =“ singleTop”声明每个活动

>我使用launchMode = singleTask尝试了相同的操作,但是它具有相同的行为

>在启动新活动的每个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);

我的Launcher-Activity是SplashScreenActivity,如果用户使用以下代码登录并启动finish(),它将启动MainActivity

Intent intent = null;

intent = new Intent(SplashScreenActivity.this, HomeActivity.class);

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

startActivity(intent);

finish();

我想念什么?欢迎任何建议!

解决方法:

“系统在新任务的根部创建活动并将其意图路由到该任务.但是,如果该活动的实例已经存在,则系统通过对其onNewIntent()方法的调用将该意图路由到现有实例.而不是创建一个新的.”

标签:android-launcher,android

来源: https://codeday.me/bug/20191119/2039892.html

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐