每天在应用程序首次启动时运行代码

时间:2017-03-03 07:20:09

标签: android

在我的学校项目的Android应用程序中,我想这样做:

每天,当您第一次打开应用程序时,它将启动一项活动。但是,如果您在多任务处理视图中关闭应用程序后再次打开它,它将不会再次启动该活动。

我希望它与Elevate(https://www.elevateapp.com/)非常相似,在首次启动时,它会说“您当天的训练课程已准备就绪”,但如果您在其他时间打开应用程序,则不会再显示此内容一天。

这是活动的屏幕截图: enter image description here

我已尝试在此Alarm Manager Example链接中使用AlarmManager并搜索答案,但它对我无效,我找不到任何答案。

有没有办法让它成为可能?提前谢谢。

2 个答案:

答案 0 :(得分:3)

我们可以使用SharedPreferences存储应用启动时的系统日期,并在每次应用运行时验证它是相同的日期还是不同的日期。

如果日期不同,请将新日期存储到您使用的SharedPreferences句柄中。

要了解如何使用SharedPreference存储数据,您可以查看我的答案here作为示例。

答案 1 :(得分:1)

首先在全局级别

声明这两种方法
   public static void commitPref(String key, String value, Context context) {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
        SharedPreferences.Editor editor = prefs.edit();
        editor.putString(key, value);
        editor.commit();
    }

    public static String readPref(String key, Context context) {
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
        return preferences.getString(key, null);
    }

现在保持你的逻辑..

 if (!readPref("CHECK_IF_RUN_TODAY", getApplicationContext()).equals(new SimpleDateFormat("yyyy-MM-dd", Locale.US).format(new Date()))){
            //YOUR LOGIC
            commitPref("CHECK_IF_RUN_TODAY", new SimpleDateFormat("yyyy-MM-dd", Locale.US).format(new Date()), getApplicationContext());
        }

但不要忘记在你的逻辑之后提升你的偏好 希望这会有所帮助..