2010-11-25 2 views
4

Мое приложение - это сервис, который запускается при загрузке (с помощью загрузочного приемника), и должен периодически собирать данные, отправлять их по сети и переходить в режим сна (возможно, используя AlarmManager). У него нет никаких действий - нет пользовательского интерфейса.Должен ли я работать в отдельном потоке, если у моего приложения Android нет интерфейса?

Есть ли причина порождать дополнительный поток для выполнения логики приложения? Если нет, где я должен выполнять логику? в методе OnStart?

ответ

4

Есть ли какая-либо причина для создания дополнительной нити для выполнения логики приложения?

Абсолютно. Ваш сервис будет убит, если он не сможет ответить в течение 5-10 секунд. Ничто не может связать основной поток приложений за этот период времени.

Я рекомендую IntentService для использования с AlarmManager. В частности, если вы хотите, чтобы устройство не спало, пока вы делаете то, что вы делаете, вы можете рассмотреть мой WakefulIntentService.

Кроме того, если вы планируете распространять это приложение через Android Market, пожалуйста, имейте в виду, что пользователям, похоже, не нравятся приложения без интерфейса. Они устанавливают его, путают, когда в пусковой машине нет иконки, и дают вам рейтинг в одну звезду. Даже если вам не нужен пользовательский интерфейс для фактической работы, вы можете рассмотреть хотя бы некоторую активность в пусковой установке, которая показывает документацию, возможно, журнал выполненной работы, позволяет регулировать частоту вашей работы и т. Д.

+0

спасибо за отвратительный ответ! одно разъяснение, которое я бы оценил - когда вы говорите «не отвечает в течение 5-10 секунд», вы имеете в виду, что если onStart не вернется в течение 5-10 секунд, то служба будет убита? – 2010-11-25 19:40:52

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