2012-04-23 116 views
3

我有一个小问题...更多'比任何其他我需要一些提示和例子.. 我需要运行2个字符串的比较,其中之一是从设备上的当前日期派生另一个是我写的日期。所以这个比较可以随时做出。 这个比较如果是真的运行各种命令。Android AlarmManager服务

我已经创建的一个服务,在这个服务调用的存在,我需要比较的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?

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

回答

3

据我所知,你在“MyAlarmService”中每10秒进行一次测试,对吧?

如果是这样,我的建议是使用处理程序而不是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); 
+0

非常感谢,但我需要即使设备的循环执行进入睡眠模式。 – Tony 2012-04-23 01:06:13

+0

你的意思是:你可能想把测试代码放在循环中? – Tony 2012-04-23 01:15:42