美文网首页
安卓部分手机后台打开开屏页

安卓部分手机后台打开开屏页

作者: Rhett_yu | 来源:发表于2021-11-19 17:25 被阅读0次

遇到问题,部分手机安卓部分手机后台打开开屏页,然后再跳到之前页面。

1.出现原因

应用A 通过包名启动应用B,此时的intent是启动意图,
应用B B_1页面启动后,启动主页B_2,同时关闭B_1,返回多级调整【B_2_B_3…>Bn】
返回桌面,点击图标启动B,此时的intent是启动意图复用创建时的intent,重新启动B,【B_2_B_3…>B_1】,因为B_2的启动模式singleTask,栈内唯一,B_2重用,并移除栈上的B_n等页面,造成上层的页面关闭,而B_2仍然正常,即回到应用主页

2.修复方式

启动B_1页面时,判断其栈内是否有其他页面使用,使用isTaskRoot()判断是否是栈底的页面,仅且正常开启才会在栈底,而当从其他app跳转时,如果栈内已有活动页面,不做处理即可。

而从柯元旦所著的《android内核剖析》一书中有记录如下规则:

每次启动Intent导致新创建Task的时候,该Task会记录导致其创建的Intent;而如果后续需要有一个新的与创建Intent完全一致(完全一致定位为:启动类,action、category等等全部一样,不可多项也不可缺少),那么该Intent并不会触发Activity的新建启动,而只会将已经存在的对应Task移到前台;这也就是为什么桌面会在再次点击图标时将后台任务挪到前台而不是重新启动App的实现

3.实际上现在有些手机只要退到后台,再回来就依然复现

if (!isTaskRoot()) {//// 判断当前activity是不是所在任务栈的根
Intent intent = getIntent();
if (intent != null) {
String action = intent.getAction();
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) {
finish();
}
}
}

相关文章

  • 安卓部分手机后台打开开屏页

    遇到问题,部分手机安卓部分手机后台打开开屏页,然后再跳到之前页面。 1.出现原因 应用A 通过包名启动应用B,此时...

  • 收银软件后台操作流程(电脑版)

    在上一篇文章中,我们给各位商户朋友们讲解了收银软件后台操作流程(安卓版),该安卓版可以在安卓手机上打开使用,同样也...

  • flutter android 无法运行的情况

    flluter 部分控件支持安卓X后,在安卓手机上无法运行。AS单独打开 android项目,产生以下提示。 Wa...

  • TV开屏页

    目前安卓的开屏已经不推荐自己创建SplashActivity了,而是使用系统自带的开屏。 安卓12以后自带这个依赖...

  • (技术)说说Android 开屏广告页的适配

    安卓机型多不多?多....安卓开屏广告的适配麻烦不麻烦?麻烦安卓开屏广告的适配能不能实现?能先上个效果图: 想不想...

  • 如何下载手机版OA系统?

    安卓手机 打开浏览器,输入s.u0759.con/app,选择安卓手机,点击下载即可。 苹果手机 打开App st...

  • React Native真机运行篇

    启动项目 打开终端,cd到项目目录,输入指令启动项目 安卓真机运行 1.连接安卓手机 1)打开安卓手机的开发者模式...

  • APP下载引导页H5开发

    开发APP下载引导页,情况说明:1.APP下载链接由后台返回2.iOS版本打开到AppStore下载3.安卓版本链...

  • DocumentsContract.getDocumentId(

    近期在部分安卓手机中获取文件,发现部分安卓手机的uri路径中返回的不是 content://media/exte...

  • iOS保持App真后台运行

    在我看来,苹果系统与安卓系统最直观的区别就是后台处理方式了吧,安卓手机一旦开启了很多app放到后台,即使前台什么也...

网友评论

      本文标题:安卓部分手机后台打开开屏页

      本文链接:https://www.haomeiwen.com/subject/fahetrtx.html