Еще одна опасность предварительных заявлений заключается в том, что это облегчает нарушение правила «Одно определение». Предполагая, что у вас есть предварительное объявление class B
(которое должно быть в bh и b.cpp), но внутри a.cpp вы фактически включаете b2.h, который объявляет class B
отличный от bh, тогда вы получаете неопределенный поведение.
К сожалению, сейчас нет надежного способа получить широковещательное событие после того, как ваше приложение было установлено, ACTION_PACKAGE_ADDED Intent не транслируется во вновь установленный пакет.
] У вас должен быть класс широковещательного приемника, а также ваша служба, чтобы получать событие ACTION_BOOT_COMPLETED . Я также рекомендовал бы добавить намерение ACTION_USER_PRESENT , которое должно быть поймано этим широковещательным приемником, для этого требуется Android 1.5 (minSDK = 3), это будет вызывать ваш широковещательный приемник всякий раз, когда пользователь разблокирует свой телефон. Последнее, что вы можете сделать, чтобы сохранить работоспособность службы, не отключая ее автоматически, - это позвонить в службу .
Возврат START_STICKY
в Service.onStartCommand
Android перезапустит вашу службу