2013-10-03 1 views
1

Я создаю API, который должен работать в потоке. Теперь я действительно не знаю, следует ли мне интегрировать/предоставить фоновое задание в моем API. Сделать это потокобезопасным не проблема.Должен ли я интегрировать фоновое задание в API?

Есть много возможностей делать потоки в Android (IntentServices, собственные решения Thread, AsyncTask и т. Д.). Теперь я чувствую, что если я интегрирую фоновое задание, скажем, AsyncTask, разработчик, который использует API, будет очень ограничен, чтобы использовать его. Потому что, учитывая f.e. изменения ориентации, разработчик должен иметь возможность реагировать на него должным образом. И это должен быть его выбор, как делать резьбу, чтобы он мог придерживаться своего дизайна.

Как я должен справиться с этим, чтобы обеспечить лучшую работоспособность? Предоставление задачи, которую можно использовать или игнорировать? Просто сделайте поток API безопасным и пусть разработчик реализует API в фоновой задаче по своему выбору?

Еще одна причина, по которой я спрашиваю, что большинство API в Android/Java не предоставляют фоновой задачи, но являются потокобезопасными.

Есть ли общее правило об этом?

ответ

1

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

Если API состоит из метода ожидания или опроса в режиме шинного или серверного типа для ввода пользователем, тогда сам API должен не работать в основном потоке. Вероятно, он должен быть построен как служба или Asynctask. Не забудьте сохранить ссылку на основной поток в обработчике, чтобы иметь возможность обновлять IU.

И даже если это не тот тип, я бы построил его в фоновом потоке и внутренне использовал обработчик для совершения вызовов.

+0

Я с вами. Для обеспечения обратных вызовов и использования обработчиков для правильного взаимодействия это не проблема. Рассмотрим, что API включает Сервис. Затем он должен быть зарегистрирован в манифесте. Это то, чего я бы хотел избежать. Даже при изменении ориентации API должен уметь выжить в этом событии. IMO - это точки, которые лучше всего контролировать без интеграции фоновой задачи в API. –