Как запустить AsyncTask в определенное время из действия? - PullRequest
1 голос
/ 04 октября 2011

У меня есть AsyncTask в задании, которое я хочу запускать только раз в неделю.Как мне это сделать?

Я извлекаю список URL-адресов около 7 из них и затем помещаю их в SharedPreference.

Я хочу обновлять и проверять новые URL только один раз в неделю из моей деятельности.Это будет в моей основной деятельности.

1 Ответ

2 голосов
/ 04 октября 2011

Вы можете сохранить дату при использовании асинхронной задачи в общих настройках.Таким образом, всякий раз, когда начинается основное действие, вы можете проверить текущую дату и дату в общих настройках, если она превышает 7 дней, вы можете снова выполнить асинхронную задачу и обновить сохраненную дату до текущей даты.

IПолагаю, вы уже знаете, как поместить строки в общие настройки и получить к ним доступ.

Это просто основной код того, что нужно делать.Вам нужно будет немного его изменить, чтобы он работал на вас.

private static String getToday(){
    Calendar objCalendar = new GregorianCalendar(Calendar.getInstance().getTimeZone());
    DateFormat objFormatter = new SimpleDateFormat("dd-MM-yyyy");
    return objFormatter.format(objCalendar.getTime());
}

private static String getAfter7DaysDate(){
    Calendar objCalendar = new GregorianCalendar(Calendar.getInstance().getTimeZone());
    DateFormat objFormatter = new SimpleDateFormat("dd-MM-yyyy");
    objCalendar.add(Calendar.DATE, 7);
    return objFormatter.format(objCalendar.getTime());
}

public int daysBetween(Date d1, Date d2){
     return (int)( (d2.getTime() - d1.getTime()) / (1000 * 60 * 60 * 24));
}

Если вы поместите это в onCreate

    String today = getToday();
    String afterSevenDate = getAfter7DaysDate();

    DateFormat objFormatter = new SimpleDateFormat("dd-MM-yyyy");
    try {
        Log.e(today,Integer.toString(daysBetween(objFormatter.parse(today),
                objFormatter.parse(afterSevenDate))));
    } catch (ParseException e) {
        e.printStackTrace();
    }

Приведенный выше код просто извлекает текущую дату,дата после 7 дней, а также найти разницу в днях между 2 датами.Вам нужно будет получить сохраненную дату, найти дату после 7 дней и проверить, является ли разница между текущей датой> = от 7. Если это правда, выполните асинхронную задачу.

Это простой способ.чтобы сделать это.

Как упоминал ДжоЛаллуз, это будет работать только в том случае, если пользователь перейдет к этой деятельности.Но это сработает, даже если он откроется через месяц из-за проверки> =.Но если вам нужно сделать это, даже если пользователь не открывает ваше приложение, вам нужно заглянуть в класс AlarmManager.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...