现在App通常在第一次打开的时候都会显示“欢迎”界面,通过阅读Google I/O的代码,对该功能的实现原理理解如下
Google I/O 2015 App 欢迎界面调用流程
BaseActivity
作为所有Activity的父类,在onCreate
的时候通过调用WelcomeActivity.shouldDisplay()
来检查WelcomeActivity是否需要显示,如果需要显示则启动一个WelcomeActivity
,不需要的话直接跳过。WelcomeActivity.shouldDisplay()
通过调用自己的函数getCurrentFragment()
来获取没有显示过的Fragment,如果getCurrentFragment
返回值是null
则直接返回False
。getCurrentFragment
通过调用getWelcomeFragment()
来获取所有的Welcome页面,然后对每个WelcomeFragment调用其自身的shouldDisplay
函数检查是否需要显示,需要则添加到显示列表里面,不需要则跳过。每个WelcomeFragment通过调用
SettingsUltils.is...Accepted
来决定函数shouldDisplay
的值SettingUltils.is...Accepted
通过PreferenceManager.getDefaultSharedPreference.getBoolean
来获取储存起来的Welcome状态在看完某个WelcomeFragment后,WlecomeFragment就通过调用
SettingsUltils.mark...Accepted
来标识该WelcomeFragment已经被Accepted。这样下次被检查的时候就不会在显示。
简易流程图
BaseActivity-->WelcomeActivity.shouldDisplay?-->WelcomeActivity.getCurrentFragment=?null-->WelcomeActivity.getWelcomeFragment==?null-->WelcomeActivityContent.shouldDisplay?-->SettingsUtils.is...Accepted?
Title:App欢迎界面的实现逻辑
Author:Jason Hu
Created:2016-07-29, 01:31:58
Updated:2016-07-29, 01:37:40
Full URL:http://0xng.com/2016/07/29/App欢迎界面的实现逻辑/ **
License:** "CC BY-NC-SA 4.0" Keep Link & Author if Distribute.