Я бы предложил вам использовать WorkManager
или AlarmManager
или даже Services
для фоновых периодических задач.
Использование комбинации Timer
- AsyncTask
неосуществимо и может привести ко многим проблемам, одной из которых является то, что она может быть легко прервана Android, когда она находится в фоновом режиме.
Мой лучший выбор будет WorkManager
, поскольку он прекрасно обрабатывает условие для задач, например, если вы хотите запускать свою задачу только при наличии подключения к Интернету, тогда вы просто добавьте Work Constraint
к вашему рабочему запросу следующим образом
Constraint networkConstraint = new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build();
workRequest.setConstraints(constraints)
И ваша задача будет выполнена, только если сеть подключена. Кстати, их не нужно переустанавливать вручную после перезагрузки, как это делает AlarmManagers
.
Однако, у этого есть и недостатки, один из которых - периодические запросы, может происходить только каждые 15 минут, которые можно обойти (хотя и не рекомендуется), установив больше однократных рабочих запросов в каждом перодическом запросе с меньшими интервалами времени отложенного старта.
В любом случае, прекратите использовать подход AsyncTask
, который вы используете сейчас, и используйте один из «законных» подходов, которые Android одобряет для выполнения фоновых задач, я рекомендую WorkManager
, но, исходя из вашей ситуации, вы можете выберите любой подход, который вам нравится, если он предназначен для работы в фоновом режиме.
Необходимо будет использовать обработчик событий, если Вы хотите проверить состояние нескольких полей. Можно использовать события ItemAdding/ItemUpdating, если Вы хотите отменить объект, который добавляется/обновляется.
свойства. Cancle = верный; свойства. ErrorMessage = "Ваше сообщение проверки".;
Я думаю, что вы пытаетесь создать такой инструмент, который называется Проверка формы SharePoint .
Если это так, взгляните на этот блог: http : //office.microsoft.com/en-us/sharepointtechnology/HA101054791033.aspx? pid = CH100650061033
Надеюсь, это поможет!