Kotlin_实现每天仅弹框提醒一次

有时应用的弹框提醒,仅需每天第一次运行的时候提示用户。

可以通过本地存储一个日期值, 和系统的日期值做比较,不相等则弹框。

其中:

1. 本地存储日期值通过 SharePreference 实现存储和读取。

2. 系统日期值 通过Calendar 获取, 这里仅是判断Day

 

class MainActivity : AppCompatActivity() {
    val LAST_LAUNCH_DAY = "last_launch_day"
    private lateinit var sharePreferences : SharedPreferences

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        sharePreferences = PreferenceManager.getDefaultSharedPreferences(this)

        checkAndShowDialog()
    }

    private fun checkAndShowDialog() {
        var currDay = getCurrDay()
        var locateDay = getCurrDayFromPreference()
        Toast.makeText(
            this,
            "系统日期是 $currDay, 本地存储日期是 $locateDay",
            Toast.LENGTH_SHORT
        ).show()

        if (currDay != locateDay) {
            var dialog = AlertDialog.Builder(this)
            dialog.setTitle("提示")
            dialog.setMessage("我只是一个提示啊")
            dialog.create()
            dialog.setPositiveButton("确定") {_, _ -> {
                //相关操作
            }}

            dialog.setNegativeButton("取消") {_, _ -> {
                //相关操作
            }}
            dialog.show()
            // 更新本地存储日期
            sharePreferences.edit().putInt(LAST_LAUNCH_DAY, currDay).apply()
        }
    }

    // 本地存储日期
    private fun getCurrDayFromPreference(): Int {
        return sharePreferences.getInt(LAST_LAUNCH_DAY, 0)
    }
    // 系统日期
    private fun getCurrDay(): Int {
        return Calendar.getInstance().get(Calendar.DAY_OF_MONTH)
    }
}

 

也可以通过SimpleDateFormate获取完整的年月日,甚至时分秒, 例如每隔几个小时弹框

    // 系统日期
    private fun getCurrDate(): String {
        return SimpleDateFormat("yyyyMMdd HH:mm:ss", Locale.US).format(Date())
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值