gpt4 book ai didi

java - 确定应用程序启动后 30 天 Java

转载 作者:行者123 更新时间:2023-12-02 08:53:12 26 4
gpt4 key购买 nike

如何在用户首次启动应用程序 30 天后弹出警报对话框。

我想在使用应用程序 30 天后显示警报对话框,访问日历的方法有效,但当用户使用设置更改手机日期时,该方法失败。

这个工作的闲置方式是什么?这可以使用 session 、处理程序或 Runnable 方法来实现吗?

最佳答案

首次启动应用程序时,获取当前纪元时间并将其保存在共享首选项中,例如 FIRST_LAUNCH_SECONDS。在每次后续启动时,检查当前纪元时间是否比 FIRST_LAUNCH_SECONDS 大 2592000 秒。 (30 天 = 2592000 秒)

在主 Activity onCreate中,调用以下方法:

void showAlertAfterOneMonth(){ 
long currentTime = System.currentTimeMillis() / 1000; //in seconds

SharedPreferences prefs = getSharedPreferences("SHARED_PREF", MODE_PRIVATE);
long firstLaunchTime = pref.getLong("FIRST_LAUNCH_SECONDS", currentTime)
long isAlertShown = pref.getBoolean("ALERT_SHOWN", false)

if (isAlertShown){
// alert has already been shown once after one month. so do nothing.
return
}
else if (currentTime - firstLaunchTime == 0){
// this is first launch, set the time in shared preference
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("FIRST_LAUNCH_SECONDS", currentTime);
editor.commit();
}
else if(currentTime - firstLaunchTime >= 2592000){
// one month has completed after first launch, show alert.

// Save a flag in shared preference so that alert will be shown
// only ONCE after one month is completed.
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("ALERT_SHOWN", true);
editor.commit();
}
}

但是,如果重新安装应用程序或清除应用程序缓存,共享首选项将被清除。

更新:显然,如果用户更改系统时间,currentTimeMillis 也会更改。如果您想要更万无一失的解决方案,您可以使用System.nanoTime()而不是 System.currentTimeMillis()。

关于java - 确定应用程序启动后 30 天 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60651696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com