Java-Android 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?

如果您能给我一些例子,将不胜感激..在此先感谢!

解决方法:

据我所知,您每隔10秒就会在“ MyAlarmService”中按时进行测试,对吗?

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

此外,您可能不需要在每次运行测试时都启动服务.服务不是您应该持续启动的东西,您可能希望将测试代码放入循环中,并仅在确实需要时才启动服务.

至于使用处理程序的示例,这里有一个教程:http://www.vogella.com/articles/AndroidPerformance/article.html

您应该做的是:

Handler handler = new Handler();
handler.postDelayed(new Runnable() { /* comparison work */ }, EXEC_INTERVAL);
上一篇:linux – 超级线程cpu的/ proc / cpuinfo中“cpu MHz”字段是什么意思?


下一篇:Servlet中forward和redirect的区别(转)