您的位置:首页 > 房产 > 家装 > 网站建设与制作布局_郑州防控升级_百度手机助手app下载并安装_长沙百度快照优化排名

网站建设与制作布局_郑州防控升级_百度手机助手app下载并安装_长沙百度快照优化排名

2025/1/8 11:18:37 来源:https://blog.csdn.net/u010263943/article/details/143495492  浏览:    关键词:网站建设与制作布局_郑州防控升级_百度手机助手app下载并安装_长沙百度快照优化排名
网站建设与制作布局_郑州防控升级_百度手机助手app下载并安装_长沙百度快照优化排名

场景:甲App唤醒处于后台时的乙App的目标界面Activity,且乙App的目标界面Activity处于最上层,即已经打开状态,要求甲App使用scheme唤醒乙App时,达到跟从桌面icon拉起App效果一致,不能出现只拉起了乙App的目标界面Activity在甲App中,并且拉起后,乙App目标界面Activity的状态,跟处于后台时的一致,不能重新走onCreate,而是只走onReStart、onStart、onResume生命周期。

一、方式一

1、甲App跳转intent配置如下:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("schemeurltest://hostdemo"));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
startActivity(intent);

其中schemeurltest://hostdemo为乙App的目标界面scheme地址;

注意:intent必须添加:intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED),否则只会在甲App中拉起乙App的目标界面Activity,而不是唤醒整个乙App。

2、乙App的目标界面Activity清单文件设置如下:

<activity android:name="com.xxx.yyy.TestActivity"android:exported="true"android:theme="@style/TransparentDialog"android:screenOrientation="behind"><intent-filter><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><action android:name="android.intent.action.VIEW" /><data android:scheme="schemeurltest"android:host="hosttest"/></intent-filter>
</activity>

注意这里不用配置启动模式 android:launchMode="" 

二、方式二

1、甲App跳转intent配置如下:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("schemeurltest://hostdemo"));
startActivity(intent);

其中 schemeurltest://hostdemo 为乙App的目标界面scheme地址;

注意这里不用设置intent的Flags

2、乙App的目标界面Activity清单文件设置如下:

<activity android:name="com.xxx.yyy.TestActivity"android:exported="true"android:theme="@style/TransparentDialog"android:launchMode="singleTask"android:screenOrientation="behind"><intent-filter><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><action android:name="android.intent.action.VIEW" /><data android:scheme="schemeurltest"android:host="hosttest"/></intent-filter>
</activity>

注意这里启动模式必须配置为:android:launchMode="singleTask" 

三、两种方式的区别

方式一,当启动intent设置为:intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED),可以不用设置启动App目标界面Activity的启动模式。

方式二,当启动intent不设置Flags时,则需要设置启动App目标界面Activity的启动模式为:android:launchMode="singleTask"。

四、都不适配的话会怎样

如果不配置以上两种方式,那么在甲App里唤醒起来的乙App的目标界面Activity会是下面这样:也就是乙App的目标界面Activtiy出现在了甲App当中,并非从后台唤醒整个乙App。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com