gpt4 book ai didi

java - 如何在每个午夜运行的android上设置任务?

转载 作者:搜寻专家 更新时间:2023-11-01 09:47:20 24 4
gpt4 key购买 nike

我需要在 android 上设置任务以检查新数据并从远程服务器下载它。基本上我知道如何运行任务,但问题是:我应该从主线运行 scheduleAlarm() 方法吗?这意味着每次用户打开应用程序时都会调用此方法。它会创建重复的任务吗?设置此类任务的正确方法是什么?

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
}
}

最佳答案

使用 PendingIntent 启动执行网络请求的服务。

PendingIntent.getService(...)

但请确保它以异步方式执行 IntentService 或实际网络请求。

编辑:对不起,我误解了这个问题。 PendingIntent 中的最后一个参数指定当 PendingIntent 已经存在时要做什么。在这个例子中,你告诉如果这样的 PendingIntent 已经存在,那么它应该被更新。因此,只要 PendingIntent 的参数保持不变就应该没问题,因为没有创建新的 PendingIntent。

关于java - 如何在每个午夜运行的android上设置任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37437112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com