在Android中,通常我们都会设置一个通知栏点击后的跳转目的页面,通过Intent的方式。那如果有一个需求是如果应用在后台,不再跳转到目的页面,只是恢复用户在后台的当前页面,怎么做?
Stack栈
我们可以通过栈的方式来实现,思路就是将用户的操作行为中的每一个activity做入栈和出栈处理,我们知道栈是先入后出的规则,Activity本身在系统中也是通过栈来管理,这样我们就能在通知到来的时候,设置通知跳转的目标为栈顶的Activity,就能做到恢复用户之前后台最后操作页面Activity。
// 自定义一个父类继承AppCompateActivity,每一个Activity都继承该父类
private static final Stack<Activity> sActivities = new Stack<>();
// 在onCreate中将当前Activity入栈
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
sActivities.push(this);
}
// 在onDestroy中将当前Activity出栈
@Override
protected void onDestroy() {
super.onDestroy();
sActivities.remove(this);
}
深入实践
如果用户强制退出了App,比如App崩溃了,那我们如果想让用户下次打开App的时候继续浏览这个页面,该怎么办?
想到了吗?其实也能用这种方式,将用户行为存储到数据库,即更新存储栈顶的Activity,下次打开app如果有值并且非主页,那就跳转到存储的栈顶Activity。完美实现。
网友评论