我创建了一个应用程序,它轮询服务器以获取必须发送给我们用户的SMS。对于轮询功能,我使用警报管理器每隔5分钟触发一次轮询服务器
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent pintent = new Intent(this, SMSSender.class);
PendingIntent pIntent = PendingIntent.getBroadcast(this,0,pintent, 0);
if(checkbox.isChecked()) {
long interval = 60*Integer.valueOf(PreferenceManager.getDefaultSharedPreferences(this).getString("pref_poll_interval", "5000"));//5mins;//5mins
long firstPoll = SystemClock.elapsedRealtime() + 60*Integer.valueOf(PreferenceManager.getDefaultSharedPreferences(this).getString("pref_poll_interval", "5000"));
alarm.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstPoll, interval, pIntent);
Log.d("SMS_GATEWAY", "alarm manager turned on "+interval);
}else {
alarm.cancel(pIntent);
Log.d("SMS_GATEWAY", "alarm manager turned off");
}
我已经在模拟器上针对2.2版本测试了应用程序并且一切正常,现在测试最终的短信出去我已经在三星Galaxy S手机上安装了应用程序。
一旦安装了应用程序并且选择了对poll服务器的首选项,就不会发生任何事情。
可能是什么问题
答案 0 :(得分:0)
考虑使用BuzzBox SDK库解决您的问题。
http://hub.buzzbox.com/android-sdk/
您可以使用cron字符串安排任务:
SchedulerManager.getInstance()
.saveTask(this, "*/5 8-19 * * 1,2,3,4,5", YourTask.class);
我有一个Galaxy S,我在我的一些应用中使用了BuzzBox SDK。 您可以检查SDK中集成的调度程序日志,以验证您的任务是否正常运行。
答案 1 :(得分:0)
在深度睡眠状态下,三星手机上的AlarmManager无法正常工作:( BuzzBox SDK使用AlarmManager,因此它有同样的问题(我在Galaxy 5500上测试过)。 例如http://www.netzpurist.de/2010/11/samsung-gt-i5500-with-android-2-1-update1-alarmmanager-not-suitable/