我需要在android上设置任务来检查新数据并从远程服务器上下载它。 基本上我知道如何运行任务,但问题是: 我应该从主thred运行scheduleAlarm()方法吗?这意味着每次用户打开应用程序时,都会调用此方法。 它会创建重复的任务吗? 设置这类任务的正确方法是什么?如何设置将在每个午夜运行的android任务?
public void scheduleAlarm(){
Calendar date = new GregorianCalendar();
date.set(Calendar.HOUR_OF_DAY, 0);
date.set(Calendar.MINUTE, 0);
date.set(Calendar.SECOND, 0);
date.set(Calendar.MILLISECOND, 0);
Intent intentAlarm = new Intent(this, AlarmReciever.class);
// create the object
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
//set the alarm for particular time
alarmManager.set(AlarmManager.RTC_WAKEUP,date.getTimeInMillis(), PendingIntent.getBroadcast(this,1, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT));
}
public class AlarmReciever extends BroadcastReceiver{
ConnectivityManager cm = null;
NetworkInfo netInfo = null;
@Override
public void onReceive(Context context, Intent intent)
{
// exec task download data
}
}
所以基本上,我的代码只会更新呢?并不会创建一个新的任务? – Eli
PendingIntent保持不变。但是,在设置新警报之前,您可以使用AlarmManager.cancel(thePendingIntent)取消任何与PendingIntent相匹配的警报。 – GPuschka