java - Android AlarmManager 服务

标签 java android service alarmmanager

我有一个小问题...我最需要的是一些提示和示例.. 我需要对 2 个字符串进行比较,其中一个来自设备上的当前日期,另一个是我写入的日期。所以这个比较可以随时进行.. 这个比较如果是真的运行各种命令。

我创建了一个调用循环一服务的 AlarmManager,并且在该服务中存在我需要的比较..

private static final int EXEC_INTERVAL = 10 * 1000;

Intent myIntent = new Intent(AndroidAlarmService.this, MyAlarmService.class);
   pendingIntent = PendingIntent.getService(AndroidAlarmService.this, 0, myIntent, 0);

            AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.add(Calendar.SECOND, 10);

            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), EXEC_INTERVAL,  pendingIntent);

什么方法能更好地满足我的需求?

我用这个?还是需要 BroadcastReceiver?

如果你能给我一些例子,非常感谢..提前致谢!

最佳答案

据我所知,您在“MyAlarmService”中每 10 秒进行一次准时测试,对吗?

如果是这样,我的建议是使用 Handler 而不是 AlarmManager。根据android文档(http://developer.android.com/reference/android/app/AlarmManager.html),您应该使用Handler来进行定时操作。

此外,您可能不需要每次运行测试都启动服务。服务不是你应该不断启动的东西,你可能想把测试代码放在循环中,只有在你真正需要它的时候才启动服务。

关于handler的使用例子,这里有教程:http://www.vogella.com/articles/AndroidPerformance/article.html

你应该做的是:

Handler handler = new Handler();
handler.postDelayed(new Runnable() { /* comparison work */ }, EXEC_INTERVAL);

关于java - Android AlarmManager 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10273376/

相关文章:

android - Unity Android 构建时出错 - 此构建中使用了已弃用的 Gradle 功能,使其与 Gradle 6.0 不兼容

Android:拍照并保存到指定文件夹

Android AVD 无法通知 JmDNS 服务

java - 浏览器无法在 gmail api 中打开

java - java.io.Serializable 是如何成为 Memento 模式的?

java - 如何将 AST 转换为 JDT Java 模型

java - hibernate 模式 : maven dependency version information

Android 4.3 低功耗蓝牙不稳定

exception - Powershell:捕获无法启动服务时引发的异常

sql - 自动启动本地服务器