Android 系列 2.9设置首次运行首选项
原创
©著作权归作者所有:来自51CTO博客作者曹观沧海的原创作品,请联系作者获取转载授权,否则将追究法律责任
2.9设置首次运行首选项
问题
您有一个匿名收集应用使用情况数据的应用,因此您有义务让他们第一次运行您的应用时注意到这一点。
解
使用共享首选项作为持久存储来存储值,该值仅更新一次。每次应用程序启动时,它将在首选项中检查此值。如果值已设置(可用),则不是应用程序的第一次运行;否则为第一次运行。
讨论
您可以使用Android框架的Application类来管理应用程序的生命周期。我们将使用共享首选项作为持久存储来存储首次运行的值。
如果这是第一次运行,我们将在首选项中存储一个布尔标志。当应用程序首次安装和使用时,没有可用的首选项。
他们将为我们创造。在这种情况下,该标志将返回值true。获得true标志后,我们可以更新此标志的值为false,因为我们不再需要它为true。参见实施例2-11。
实施例2-11。首选偏好
public class MyApp extends Application {
SharedPreferences mPrefs;
@Override
public void onCreate() {
super.onCreate();
Context mContext = this.getApplicationContext();
// 0 = mode private. only this app can read these preferences
mPrefs = mContext.getSharedPreferences("myAppPrefs", 0);
// Your app initialization code goes here
}
public boolean getFirstRun() {
return mPrefs.getBoolean("firstRun", true);
}
public void setRunned() {
SharedPreferences.Editor edit = mPrefs.edit();
edit.putBoolean("firstRun", false);
edit.commit();
}
}
来自首选项的此标志将在启动器活动中进行测试,如示例2-12所示。
实施例2-12。 检查这是否是此应用程序的第一次运行
if(((MyApp) getApplication()).getFirstRun()){
//This is the first run
((MyApp) getApplication()).setRunned();
// your code for the first run goes here
}
else {
// this is not the first run on this device
}
即使您发布了应用程序的更新,并且用户安装更新,这些首选项也不会被修改; 因此,代码将仅在安装后的第一次运行时工作。 对应用程序的后续更新不会将代码带入图片,除非用户已手动卸载并重新安装应用程序。
您可以使用类似的技术来分发Android应用的共享版本(即限制应用的试用次数)。 在这种情况下,您将在首选项中使用整数计数值来指示试验次数。 每个试验将更新偏好。 达到所需值后,您将阻止应用程序的使用,直到用户支付使用费。