2016-05-18 2 views
0

У меня есть задание с интервалом в моем приложении для Android. Предположим, что это задача проверки работоспособности устройства, подключенного к USB, и оно работает каждые 10 минут. В соответствии с приведенным ниже кодом класса задача запускается с помощью метода start().Как решить рекурсивный вызов, который вызывает ошибку переполнения стека в Android?

Когда первый запрос не выполнен, немедленный второй запрос будет отправлен без ожидания следующего интервала 10 минут. Немедленные следующие проверки будут отправляться в соответствии с repeatCounter, например, 2 раза или 3 раза. Однако, когда второй sendRequest() вызывается в onWrite(), threadid=1: stack overflow on call бросается. Я думаю, это рекурсивная проблема.

mWrite - это обратный звонок к mAccessor.Write();

Как я могу это решить?

ответ

0

Я заметил 2 возможных вопросы:

  1. уменьшает repeatCounterперед тем вызова sendRequest снова.

  2. стоп дело должно быть - «if (repeatCounter <= 0)» не «==», чтобы избежать возможных проблем, где вы уменьшаете в два раза, прежде чем добраться до точки проверки значения на repeatCounter

 Смежные вопросы

  • Нет связанных вопросов^_^