我需要在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