这似乎是这个博客第一篇原创代码文章……?
是的没错虽然时间比 Intent 篇要早但是我还是给按到第二篇了.png
SharedPreferences 可以用来保存键值对,这里可以利用它来判断应用是否首次运行。
首先,新建一个 firstRun()
方法,把它设置为 private
且无返回值即可。
private void firstRun(){
}
接着,我们要借用 SharedPreferences.Editor
来获取一个相应的对象,这里我们将这个数据文件保存为data.xml
,代码如下(这里这个 SharedPreferences.Editor 对象被命名为firstRun
)
SharedPreferences.Editor firstRun = getSharedPreferences("data",Context.MODE_PRIVATE).edit();
顺手读取 SharedPreferences(这里这个 SharedPreferences 对象被命名为firstBool
)
SharedPreferences firstBool = getActivity().getSharedPreferences("data",Context.MODE_PRIVATE);
然后我们用非常简单的 if 判断语句来判断是否第一次运行
if((firstBool.getBoolean("firstRun",true))){
/*
...CODE...
*/
firstRun.putBoolean("firstRun",false);
firstRun.apply();
}
由于 getBoolean()
这个方法本身的特性,如果不存在 firstRun
这个键,就会被新建一个并且赋值为紧接着的值(这里我们是 true
)
if 判断是否为真,由于首次运行,此时执行了括号内的代码,firstRun
键被赋值为 true
但是在我们运行完需要执行的符合首次运行的代码后,只需要重新往 firstRun
键中写入 false 即可。
这样,在后面的运行中由于 firstRun
键一直是 false 状态,需要执行的符合首次运行的代码将永远不会被再次运行。
完整代码:
private void firstRun(){
SharedPreferences.Editor firstRun = getActivity().getSharedPreferences("data",Context.MODE_PRIVATE).edit();
SharedPreferences firstBool = getActivity().getSharedPreferences("data",Context.MODE_PRIVATE);
if((firstBool.getBoolean("firstRun",true))){
/*
...CODE...
*/
firstRun.putBoolean("firstRun",false);
firstRun.apply();
}
}
高频机 Chrome 48.0.2564.116
写的可以呀