《Android应用开发攻略》——2.11 设置首次运行的首选项

2.11 设置首次运行的首选项

Ashwini Shahapurkar
2.11.1 问题
因为应用程序匿名收集应用程序使用情况,所以你有义务在用户第一次运行应用程序时告知他们。
2.11.2 解决方案
将共享的首选项作为持久性存储,保存一个只更新一次的值。每次应用程序启动时,它就会检查首选项中的该值,如果该值已经设置(可用),应用程序就不是第一次运行;否则,就是第一次运行。
2.11.3 讨论
可以使用Android框架的Application类管理应用程序生命周期。我们将使用共享的首选项,作为保存首次运行值的持久性存储。
在第一次运行时在首选项中存储一个boolean标志。当应用程序第一次安装和使用时,没有任何可用的首选项,创建该标志。在这种情况下,该标志返回真值(true)。在获得真值之后,可以将其更新为假值(false),因为不再需要它为真,参见例2-13。
例2-13:第一次运行的首选项

public class MyApp extends Application {
    SharedPreferences mPrefs;
    @Override
    public void onCreate() {
        super.onCreate();
        Context mContext = this.getApplicationContext();
        // 0=私有模式。只有这个应用程序能够读取这些首选项
        mPrefs = mContext.getSharedPreferences("myAppPrefs", 0);
        // 在这里放置应用初始化代码
    }
    public boolean getFirstRun() {
        return mPrefs.getBoolean("firstRun", true);
    }
    public void setRunned() {
        SharedPreferences.Editor edit = mPrefs.edit();
        edit.putBoolean("firstRun", false);
        edit.commit();
    }
}

首选项中的这个标志将在启动器活动中测试,如例2-14所示。
例2-14:检查应用程序是否首次运行

if(((MyApp) getApplication()).getFirstRun()){
    //这是第一次运行
    ((MyApp) getApplication()).setRunned();
    //在这里放置第一次运行专用的代码
    }
else{
    // 在本设备上不是第一次运行
}

即使你发布应用程序更新且用户安装了更新,这些首选项也不会修改;因此,这段代码仅在安装之后的第一次运行中有效。后续的应用程序更新不会再启动这些代码,除非用户手动卸载并重新安装应用程序。
注意: 可以使用类似的技术发布Android应用程序的共享软件版本(也就是限制应用程序使用次数)。在这种情况下,可以在首选项中使用一个整数计数值,表示试用次数,每次试用时都更新首选项。在达到期望值时,将阻止应用程序的使用,直到用户支付使用费。

时间: 2024-11-03 18:32:45

《Android应用开发攻略》——2.11 设置首次运行的首选项的相关文章

《Android应用开发攻略》——导读

前言 对于蜂窝技术和移动计算来说,Android是"开放源码的革命",至少是革命的一部分.从已经不存在的Openmoko FreeRunner到QT Embedded.Moblin. LiMo. Debian Mobile,以及Maemo和最近刚刚开放源码的Symbian OS.刚刚消失的HP WebOS,人们对于提供开放源码的蜂窝技术已经做出了许多的尝试.我们也不要忘记闭源系统的忠实拥趸:BlackBerry OS.Apple iPhone和Microsoft Windows Mob

《Android应用开发攻略》——1.11 使用SDK样例避免棘手的情况

1.11 使用SDK样例避免棘手的情况 Daniel Fowler1.11.1 问题 有时候某些功能的编码非常费力,特别是在文档粗糙或者没有提供任何例子的情况下.1.11.2 解决方案 查看现有的可行代码将会有帮助.Android SDK有一些样例程序,可以仔细观察其工作方法.1.11.3 讨论 Android SDK自带多种样例应用程序,在编写某些功能时可能有用处.细看这些样例代码可能会很有启发.安装Android SDK之后,可以找到下列样例: Accelerometer Play Acce

《Android应用开发攻略》——3.3 为应用测试设置Android虚拟设备(AVD)

3.3 为应用测试设置Android虚拟设备(AVD) Daniel Fowler3.3.1 问题 成功的应用程序必须运行于各种不同的Android设备及其版本上,所以必须在一系列设备上进行测试.3.3.2 解决方案 使用Android SDK的设备模拟工具包配置设备和操作系统的组合,通过在各种组合上的测试能够减少与设备硬件差异相关的问题.3.3.3 讨论 Android设备从廉价到"高规格/高价值",覆盖了广泛市场,出现在市场上也已经有数年之久.因此,市面上使用的设备有着广泛的硬件选

《Android应用开发攻略》——1.3 从命令行创建 “Hello, World”应用程序

1.3 从命令行创建 "Hello, World"应用程序 Ian Darwin1.3.1 问题 你想在不使用Eclipse ADT插件的情况下创建新的Android项目.1.3.2 解决方案 使用Android开发工具包(Android Development Kit,ADK)中的android工具,利用creat project参数和一些附加参数配置你的项目.1.3.3 讨论 除了平台名称之外,android还是一个用于创建.更新和管理项目的命令行工具的名称.可以进入android

《Android应用开发攻略》——1.4 在Eclipse中创建“Hello, World”应用程序

1.4 在Eclipse中创建"Hello, World"应用程序 Ian Darwin1.4.1 问题 你打算用Eclipse开发Android应用程序.1.4.2 解决方案 安装Eclipse.Android SDK和ADT plug-in.创建项目并开始编写应用程序.从Eclipse中构建项目并在模拟器下测试.1.4.3 讨论 安装如下软件之后,就可以开始开发了: Eclipse IDE Android SDK ADT plug-in 安装上述三个软件的详细讲解请参见攻略1.5.

《Android应用开发攻略》——1.15 程序:Android OS下的小费计算器Tipster

1.15 程序:Android OS下的小费计算器Tipster Sunit Katkar1.15.1 问题 当你和朋友前往饭店就餐并且希望计算各自的账单和小费时,可能陷入许多手动计算和分歧之中.你希望使用一个应用程序,简单地将小费比例加到总额上,并且按照就餐人数分配.Tipster就是Android中的一个实现,用它展示一个完整的应用程序.1.15.2 解决方案 这是一个简单的练习,使用Android中的基本GUI元素,然后用一些简单的计算和事件驱动UI代码将它们组合起来.将用到如下GUI组件

《Android应用开发攻略》——3.10 为测试重现活动生命周期场景

3.10 为测试重现活动生命周期场景 Daniel Fowler3.10.1 问题 应用程序应该适应活动生命周期.开发人员必须知道如何重现不同的生命周期场景.3.10.2 解决方案 利用日志获得对活动生命周期的全面了解,就能更容易地为测试重现生命周期场景.3.10.3 讨论 Android是为了移动的生活方式而设计的,在这种方式下,用户忙于多种工作:打电话.检查邮件.发送SMS信息.参与社交网络.拍照.访问互联网.运行应用程序等,甚至完成某些工作!因此,移动设备可能有多个应用程序,从而在内存中加

《Android应用开发攻略》——1.12 保持Android SDK更新

1.12 保持Android SDK更新 Daniel Fowler1.12.1 问题 SDK必须保持更新,使应用开发人员能够使用不断发展的Android平台上的最新API.1.12.2 解决方案 使用Android SDK Manager程序更新已安装的SDK包和安装新SDK包,包括用于设备特殊功能的第三方程序包.1.12.3 讨论 Android操作系统不断发展,因此,Android SDK也随之发展.Android持续发展的驱动力是: Google的研究和开发 手机制造商开发新的改进型手机

《Android应用开发攻略》——第2章 设计成功的应用程序 2.1 导言:设计成功的Android应用程序

第2章 设计成功的应用程序 2.1 导言:设计成功的Android应用程序 Colin Wilcox 讨论 本章介绍编写富于想象力而且实用的Android应用的设计指导思想.有几个攻略描述了成功设计的具体特征.本节将列出其他一些方面. 这一章的目的之一是解释相对于其他在移动设备上交付丰富内容的方法,原生Java Android应用程序开发的好处. 原生手机应用程序的要求 不管在何种平台上部署,成功交付任何手机应用程序都有许多关键的要求: 应用程序应该易于在设备上安装.删除和更新. 应该以引人入胜