前一篇文章所描述的登录功能逻辑并不复杂,与之相比登出功能更是特别简单,只需要跳转到登录Activity即可。值得注意的是,当用户登出后,需要将登出页的Activity以及之前的诸多Activity 全部清除,避免用户使用 后退 返回到前面打开过的Activity中。
应用程序启动页的设计
为什么APP要有启动页?启动页有什么作用? 启动页并不是为APP提供机会进行艺术展示,而是为了增强用户对应用程序能够快速启动并立即投入使用的感知度。实际上启动页相当于一个进度条的作用,APP需要在这个过程中完成 是否登录的验证、有无新版本待升级的验证 甚至 某些大型资源的加载 等等,待所有工作执行完毕,启动页跳转到下一个页面,给用户一个流畅的交互体验。
通常启动页只有一张带有LOGO的全屏图片,需要设置 android:background 为你的图片资源并将MainActivity的 theme设置为@android:style/Theme.NoTitleBar.FullScreen。启动页的内部逻辑,通常会判断用户的登录状态。在用户 第一次登陆成功之后,服务器会 根据用户的ID及登录时间生成一个token字符串并返回给客户端,客户端开发者需要将 token保存到SharedPreferences 中,在每次应用开启的时候验证token是否正确或过期,进而判断跳转到登录页或是主菜单页中。
笔者所开发APP还要在启动页判断 是否存在新版本并提醒用户升级,这就需要在向服务器请求后服务器返回的json数据中包含 最新版应用的版本号 及 下载地址。这地方出现了一个小插曲:客户端启动并发出请求,登录状态及版本信息可以压缩到一组json数据中,所以为了提高效率要尽可能 降低联网请求行为次数。后台在token正确的时候返回的数据很正常,可是在token不存在或不正确的情况下直接返回了 404,获取不到版本信息,我特地跟后端沟通之后重新定制了接口返回值后才解决了这个问题。
程序开发过程中,客户端与服务端要多商量细节的设计,避免产生不必要的麻烦。