在这一节中,我们回到Android端,讨论一下当应用第一次运行时,通常采用的一页一页滑动的介绍页面的实现方式。
首先,我们需要知道应用是否是第一次运行。判断应用是否是第一次运行,通常是应用持久化保存一个特定的信息,每次启动时检查是否有该信息,如果没有则代表第一次运行。对于信息的持久化存储,在Android平台,大约有三种方法,分别是SharedPreferences、文件、SQLite数据库,通常类似应用是否第一次运行这种小信息,一般会选择保存在SharedPreferences中。
我们首先在库工程WkyLib中的controller包内,定义一个基类为Application的WkyApplication类,在该函数中实现判断应用是否是第一次运行。Android系统中Application可以视为一个Android系统下系统提供的单例模式(Singleton)的类,可以保存一些全局变量等信息。
WkyApplication类的代码如下所示:
public class WkyApplication extends Application {
/**
* 通过查询保存在SharedPreference里面的值,检查是否是首次运行
* @return
* 【闫涛 2015.09.09】初始版本
*/
public boolean isFirstRun() {
SharedPreferences pref = getSharedPreferences(S_PREF_NAME, MODE_PRIVATE);
return pref.getBoolean(S_PREF_FIRST_RUN, true);
}
/**
* 通过判断SharedPreference里是否有userId等信息,判断用户是否注册
* @return
* 【闫涛 2015.09.09】初始版本
*/
public boolean isLogin() {
return true;
}
public final static String S_PREF_NAME = "WkgJys";
public final static String S_PREF_FIRST_RUN = "firstRun";
}
上面的代码比较简单,不用解释。但是这里还想强调一下,getSharedPreferences中使用预先定义的常量,而不是直接写字符串,这样首先不容易出现因为拼写错误而出现找不到值的问题,同时增加了代码的可读性,虽然不算什么,但是良好的编程习惯是非常非常重要的。不重视的话,迟早要付出惨重的代价。
在具体应用WkgJys工程中,在controller包中定义继承于WkyApplication的JysApplication类,代码如下所示:
public class JysApplication extends WkyApplication {
}
为了让该类可以起作用,在WkgJys工程的Manifest文件中,加入android:name属性:
<application
android:allowBackup="true"
android:name="com.weikangyun.wkgjys.controller.JysApplication"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
最后是在Splash页面中,在定时结束时,判断是否是第一次运行,第一次运行则启动应用介绍页面,代码如下所示:
startMainActivityTask = new Runnable() {
@Override
public void run() {
if (jysApplication.isFirstRun()) {
Log.e("wky", "显示介绍页面");
} else if (!jysApplication.isLogin()) {
Log.e("wky", "启动登录页面");
} else {
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
}
finish();
}
};
华丽的分隔线
******************************************************************************************************************************************************************************
希望大家多支持,有大家的支持,我才能走得更远,谢谢!
银行账号:622202 0200 1078 56128 闫涛
我的支付宝:yt7589@hotmail.com