2011-11-03 54 views
2

当Android应用第一次运行时,我需要检测Android设备ID。我提到我不使用共享首选项或文件。如何检测应用程序的第一次运行?当Android应用第一次运行时检测到

+14

有什么阻止你使用SharedPreferences?这可能是解决您的问题的常用方法。 – Egor

+0

我的问题没有其他解决方案? – Gabrielle

+0

不,至少看到+6确​​认 – ingsaurabh

回答

-1

您可以使用Android.app.Application class来存储一个标志

初始化flag = false ;首次..当应用程序安装。如果要存储的数据,需要全局变量改变标志设置为true

从应用程序中的任意位置访问多个活动,换句话说,您希望维护Application对象可以提供帮助的整个应用程序的全局“状态”。

为此,我们必须扩展了Android.app.Application类我们自己的方法给它添加一个类,这个类定义在AndroidManifest.xml如下

<application 
    android:name=".HelloApplication " 
    android:icon="@drawable/first_aid" 
    android:label="@string/app_name" > 
... 
</application> 




public class HelloApplication extends Application { 
     private int globalVariable=1; 

     public int getGlobalVariable() { 
       return globalVariable; 
     } 

     public void setGlobalVariable(int globalVariable) { 
       this.globalVariable = globalVariable; 
     } 

在此之后的任何您可以阅读活动和写这样的全局变量:

((HelloApplication)getApplication()).setGlobalVariable(10); 
    int valiable=((HelloApplication)getApplication()).getGlobalVariable(); 

的应用对象不被破坏,直到有应用程序中的任何未销毁活动。即使整个应用程序从内存中擦除,如果需要,您也可以在onCreate方法中重新初始化变量。 您可以尝试相同的数据存储方式,例如使用带有静态字段和方法的简单对象,如下所示,这是一种不太优雅的方法,并且如果在整个应用程序被终止后需要重新初始化,则必须在每个应用程序中实施重新初始化活动。

+0

我需要检测应用何时第一次运行。我不需要一些东西来保存数据。我用共享偏好解决了这个问题。 – Gabrielle

+2

在你的问题中,你提到像“我提到我不使用共享首选项或文件” – jennifer

+0

@Gabrielle你应该更新你的问题提到你最终决定使用SharedPreferences,或更好的:回答你自己的问题,解释你的决定(和接受它) –

2

您可以使用操作的代码块只对第一次

在OnCreate

SharedPreferences prefs = 
PreferenceManager.getDefaultSharedPreferences(this); 
     if (prefs.getBoolean("first_time", true)) { 
      //do something for first time 
      SharedPreferences.Editor editor = prefs.edit(); 
      editor.putBoolean("first_time", false); 
      editor.commit(); 
     } 
相关问题