java - 如何在我的 Android 应用中添加睡眠定时器
问题描述
我的项目是一个收音机应用程序,我想添加一个睡眠计时器,以便用户可以将其设置为在指定时间后关闭应用程序。
解决方案
请使用 startTimer(long ms) 启动倒数计时器并取消计时器停止。并在屏幕关闭后使用唤醒锁继续计时器。
CountDownTimer cTimer = null;
void startTimer(long time) {
if(!wakeLock.isHeld()) {
PowerManager mgr = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "SonaHeartLock");
wakeLock.acquire();
}
cTimer = new CountDownTimer(time, 1000) {
public void onTick(long millisUntilFinished) {
timerSync = millisUntilFinished;
}
public void onFinish() {
timerSync = 0;
System.exit(0);
}
};
cTimer.start();
}
//cancel timer
void cancelTimer() {
if (cTimer != null) {
timerSync = 0;
cTimer.cancel();
cTimer=null;
if(wakeLock!=null && wakeLock.isHeld())
wakeLock.release();
}
}
推荐阅读
- python - 如何传递一个系列来调用用户定义的函数?
- reactjs - 使用 Bootstrap React Accordion
- python - 为什么 Django 不能扩展我的 form.html 联系页面并返回 TemplateSyntaxError 或抛出异常?
- rest-assured - 使用 rest-assured & java 连接到 api 失败
- snowflake-cloud-data-platform - 雪花中两个日期之间的工作时间
- javascript - Webpack 服务不使用 webpack.config.js 中的路径
- python - 按列值对 CSV 文件进行排序
- google-apps-script - 如何使用 Google Apps 脚本解密 AES
- python - 合并文件夹中的所有 CSV,然后使用 Python 删除前 3 列
- android - 在 Android 中使用 MVVM 在运行时向活动添加视图