Activity的启动模式解决实际问题

来源:互联网 发布:平面设计图纸软件 编辑:程序博客网 时间:2024/05/23 23:06

     近段时间一直在忙于将eclipse的项目转到as上,哎,转项目真心是累,各种报错一点一滴的去解决,脑袋都大了。刚转完项目就接到新的任务,那就是用户登录app后,长时间不进app检测到token失效后跳登陆界面,就是这个小的功能引出了今天的博客。

   先给大家看一张效果图:

 

   大家看出问题没?在请求接口的时候后台返回的数据是用户的token已经失效了,那么前段要做的操作就是跳转到登录界面,前几篇的博客中提到过已经把网络请求封装到了一个基类,如果一个界面有多个网络请求,那么每个网络请求都检测到token失效,那么都会进行打开登录界面的操作,所以才导致上面效果图展示的效果,登录的界面被重复打开,那么怎么去防止界面充父打开的问题呢?这就需要大家对Activity的启动模式进行灵活的应用了。

   首先我们来重温一下Activity的启动模式:

     standard:Activity的每一次启动都会新建一个Activity实例,并将其压入任务栈的栈顶,而不管这个Activity是否存在,并且会走生命周期
    singleTop:栈顶复用模式,这种模式下,如果Activity已经位于任务栈的栈顶,那么此Activity不会被重新创建,所以他的启动三回调就不会执行,同时Activity的onNewIntent 方   法会被回调,如果Activity已经存在但是不在栈顶,那么它的作用和standard一样。
    singleTask:系统创建新任务并实例化位于新任务底部的 Activity。但是,如果该 Activity 的一个实例已存在于一个单独的任务中,则系统会通过调用现有实例的 onNewIntent() 方法向其传送 Intent,而不是创建新实例。一次只能存在 Activity 的一个实例。
    singleInstance:单独创建一个新的任务栈。

    对这四种启动模式我就不做详尽的解释,我们在清单文件加上一行代码再看下效果:

   

  好,再看效果:

 

 这样登陆界面就只打开一次了,好了今天的博客就到这,这篇博客没得代码,我相信这些基本的代码大家都会写,而且解决界面重复打开的方式有很多种,我这只是其中的一种,这篇博客的目的就是想告诉大家也告诉自己学的东西灵活应用,理论知识再好不知道怎么用何时用那么作为一个开发人员也不合格。

   个人愚见,不喜勿喷!

原创粉丝点击