我想在我的应用首次打开时运行一些功能。当活动是cose并返回它时,这些函数正在运行。当thr应用程序打开时,我只想运行一次。
问题是:当我运行我的应用程序并且第一个活动已打开时。然后我用intent和finish()方法将这个活动留给了另一个。当我返回到第一个活动时,代码再次运行。我不希望这个代码再次运行,只有我打开应用程序。
答案 0 :(得分:2)
只运行一次的好方法是在SharedPreferences
中保存一个布尔标志。
(在您的活动中)
public static final String PREFS_FILE = "prefs";
public static final String FIRST_OPEN_PREF = "firstopen";
...
SharedPreferences settings = getSharedPreferences(PREFS_FILE, MODE_PRIVATE);
boolean activityWasOpenBefore = settings.getBoolean(FIRST_OPEN_PREF, false);
if(activityWasOpenBefore) {
//Do something if my activity was open before
} else {
//Do something if this is the first time the activity is open
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(FIRST_OPEN_PREF, true);
editor.commit();
}
http://developer.android.com/guide/topics/data/data-storage.html#pref
答案 1 :(得分:1)
您应该创建一个使用SharedPrefences的类。
首次创建应用时,将值保存到SharedPreferences中,并指明该值。
您的应用程序打开的任何其他时间只需检查该值是否存在于SharedPreferences中。
答案 2 :(得分:1)
听起来你想要一个静态变量。
虽然运行应用程序的进程处于活动状态,但静态变量仍将保留。如果VM死机,则静态状态将丢失。
由于没有任何保证在您的活动处于后台时系统会破坏VM的时间或者甚至是什么,这不是万无一失的,但是对于您尝试做的事情可能没问题
答案 3 :(得分:0)
您的问题有点令人困惑,因为您声明您希望代码只运行一次,但在另一个建议使用SharedPreferences
的答案中,您在评论中写道
我不想只运行一次。我希望每次应用程序都运行它 开
如果将代码放在开始(根)活动的onCreate()
中,则每次启动Activity时该代码都会运行。如果您将代码放在onResume()
中,则代码将在您的活动开始时运行,或者转到前台。