Android应用被后台杀死后如何重新走闪屏逻辑

当Android应用被后台杀死后,再次启动时通常会直接显示用户上次离开的界面。若要避免走恢复流程并重新展示闪屏页,可以在onCreate方法中检查savedInstanceState是否为空。如果为空,则启动闪屏页并设置Intent的FLAG_ACTIVITY_NEW_TASK和FLAG_ACTIVITY_CLEAR_TASK,以清理之前的状态。对于推送唤醒应用的情况,需判断是否有Activity存活,若无存活Activity,则启动MainActivity并清理现场,再通过MainActivity路由到闪屏页,最后跳转目标页面。
摘要由CSDN通过智能技术生成

当用户再次启动APP时候会怎么样呢?这个时候,首先看到其实C,而不是栈底部的A,也就是说往往被杀死后,恢复看到的第一个界面是用户最后见到的那个界面。

而用户点击返回,看到的就是上一个界面B,其次是A

之所以这样是因为APP端Activity的创建其实都是由AMS管理的,AMS严格维护这APP端Activity对应的ActivityRecord栈,可以看做当前APP的场景,不过,APP端Activity的销毁同AMS端ActivityRecord的销毁并不一定是同步的,最明显的就是后台杀死这种场景。Android为了能够让用户无感知后台杀死,就做了这种恢复逻辑,不过,在开发中,这种逻辑带了的问题确实多种多样,甚至有些产品就不希望走恢复流程,本文就说说如何避免走恢复流程。结合常见的开发场景,这里分为两种,一种是针对推送唤起APP,一种是针对从最近任务列表唤起APP(或者icon)。

从最近的任务列表唤起,不走恢复流程

=================

首先,APP端必须知道当前Activity的启动是不是在走恢复流程,Activity有一个onCreate方法,在ActivityThread新建Activity之后,会回调该函数,如果是从后台杀死恢复来的,回调onCreate的时候会传递一个非空的Bundle savedInstanceState给当前Activity,只要判断这个非空就能知道是否是恢复流程。

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

}

知道恢复流程之后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值