检測用户是否是第一次打开应用

非常多时候我们须要检測用户是不是第一次打开应用,从而初始化一些数据,或者打开引导界面等等。

/*方法一:
 * 首次打开的时候获取isFirstIn值,默认值为false
 * 获得false,证明不是第一次打开
 * 获得true,证明是第一次打开;然后把isFirstIn值设为false
 * */
SharedPreferences sp = getSharedPreferences("isFirstIn", Activity.MODE_PRIVATE);
boolean isFirstIn = sp.getBoolean("isFirstInWith1.4", true);
if(isFirstIn) {
    SharedPreferences.Editor editor = sp.edit();
    editor.putBoolean("isFirstInWith1.4", false);
    editor.commit();  

    new AlertDialog.Builder(this).setMessage("这是第一次打开").show();
} else {
    new AlertDialog.Builder(this).setMessage("你打开了n次了").show();
}

注:由于在用户安装新版本号的时候,我们想要的也是显示第一次打开,可是版本号更新是会保留上一版本号的数据的,所以检測到的是之前有打开过。

所以我们在每个版本号检測的key中增加版本号号,如上面的isFirstInWith1.4,当中1.4就是版本号号。

/*方法二:
 * 在首次打开的时候检查是否存在文件(com.example.test.isFirstIn)
 * 假设已存在,证明不是第一次打开
 * 不存在,证明是第一次打开;打开之后创建文件
 * */
File dir = getFilesDir();//   /data/data/com.example.test/files
File f = new File(dir, "com.example.test.isFirstIn");
Log.e("miquan", f.getAbsolutePath());

if(f.exists()) {
	//dosomething
	new AlertDialog.Builder(this).setMessage("你打开了n次了").show();
} else {
	try {
		f.createNewFile();
	} catch (IOException e) {
		e.printStackTrace();
	}
	//dosomething
	new AlertDialog.Builder(this).setMessage("这是第一次打开").show();
}
时间: 2024-10-13 10:05:57

检測用户是否是第一次打开应用的相关文章

C++内存泄露检測原理

转自:http://hi.baidu.com/jasonlyy/item/9ca0cecf2c8f113a99b4981c 本文针对 linux 下的 C++ 程序的内存泄漏的检測方法及事实上现进行探讨.当中包含 C++ 中的 new 和 delete 的基本原理,内 存检測子系统的实现原理和详细方法,以及内存泄漏检測的高级话题.作为内存检測子系统实现的一部分,提供了一个具有更好的使用特性的相互排斥体 (Mutex)类. 1.开发背景 在 windows 下使用 VC 编程时,我们通常须要 DE

检測wifi是否须要portal验证 公共场所wifi验证

何为wifi portal验证? 平时在商场,咖啡厅,银行等公共场所.我们手机提示:有可用WLAN.这些WIFI能够直接连接,不须要password,但须要我们手动在手机网页上进行验证,通常是输入一个手机号码,点击获取验证码或password.server会发一条短信验证码或password到手机上,将其输入网页的password框,登陆就可以使用免费wifi.这个验证的网页称为portal(翻译:门.入门,表示要使用这个公共wifi,就要先"进入"这个门,也就是验证的意思). 案例

猫猫学iOS 之第一次打开Xcode_git配置,git简单学习

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:错误 当第一次打开Xcode我们进行commit操作的时候会报错: The working copy "測试" failed to commit files. * Please tell me who you are. Run git config –global user.email "[email protected]" g

opencv实现gamma灰阶检測

简单介绍 本篇解说使用opencv来測试,表示camera gamma參数的灰阶卡图片指标:YA Block.DynamicRange.Gray Scale. 详细实现 实现代码 #include <math.h> #include <string.h> #include <stdio.h> #include <stdlib.h> #include <opencv2/core/core.hpp> #include <opencv2/high

网络接口的检測

假设没有下面命令,能够先去加入一个http://repoforge.org/use/ 的yum源. ifstat命令 ifstat能够监控网络接口.比較简单地查看网络流量 ifstat默认是不监控回环接口的流量的流量的单位是KB/s 使用ifstat -a能够监控全部的接口 -l    监測环路网络接口(lo). 缺省情况下.ifstat监測活动的全部非环路网络接口.经使用发现,加上-l參数能监測全部的网络接口的信息.       而不是仅仅监測 lo的接口信息,也就是说,加上-l參数比不加-l

利用opencv中的级联分类器进行人脸检測-opencv学习(1)

OpenCV支持的目标检測的方法是利用样本的Haar特征进行的分类器训练,得到的级联boosted分类器(Cascade Classification).注意,新版本号的C++接口除了Haar特征以外也能够使用LBP特征. 先介绍一下相关的结构,级联分类器的计算特征值的基础类FeatureEvaluator,功能包含读操作read.复制clone.获得特征类型getFeatureType,分配图片分配窗体的操作setImage.setWindow,计算有序特征calcOrd,计算绝对特征calc

【VBA研究】工作表自己主动筛选模式检測

作者:iamlaosong 用VBA程序处理Excel数据文件.用户的数据文件有时处于自己主动筛选模式,往往导致数据处理不对.为此,须要检測工作表是否处于该模式,假设是,则去掉自己主动筛选.语句例如以下: If ActiveSheet.AutoFilterMode = True Then Selection.AutoFilter 这个语句一般仅仅用于去掉自己主动筛选,尽管Selection.AutoFilter也能够加上自己主动筛选,但筛选位置却可能在当前单元格处,所以要注意.加自己主动筛选前,

人脸检測中几种框框大小的选择~

人脸检測应用极为广泛,内部细节也偏多,尤其是涉及到几种类型的框,这几种框的大小之前有着千丝万缕的联系,对检測性能的好坏影响程度大小不一.本篇文章基于自己在人脸检測方面的经验,说说对这些框之间关系的一些理解. 如今大部分人脸检測效果都已adaboost+LBP(各种改进)的方式实现,adaboost由N个强分类器组成,每一个强分类器由M个弱分类器组成,而每一个弱分类器事实上就是一个特征. 本文以LBP特征为例,人脸检測共涉及到例如以下几类框: 1. LBP特征矩形框大小(极为重要) 2. 检測框大

查看系统启动内核检測硬件信息dmesg

dmesg用来显示开机信息.kernel会将开机信息存储在ring buffer中.您若是开机时来不及查看信息,可利用dmesg来查看.开机信息亦保存在/var/log文件夹中.名称为dmesg的文件中.dmesg用于检測和控制内核环缓冲. 程序用来帮助用户了解系统的启动信息. dmesg检查网卡启动状况 參 数: -c 显示信息后.清除ring buffer中的内容. -s<缓冲区大小> 预设置为8196,刚好等于ring buffer的大小. -n 设置记录信息的层级.