如何知道我的活动是否由Android开放?

时间:2014-01-30 16:24:07

标签: android android-activity

我想在我的应用首次打开时运行一些功能。当活动是cose并返回它时,这些函数正在运行。当thr应用程序打开时,我只想运行一次。

问题是:当我运行我的应用程序并且第一个活动已打开时。然后我用intent和finish()方法将这个活动留给了另一个。当我返回到第一个活动时,代码再次运行。我不希望这个代码再次运行,只有我打开应用程序。

4 个答案:

答案 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()中,则代码将在您的活动开始时运行,或者转到前台。