2012-05-22 2 views
3

Мой Service только работает, если у меня есть MyService.java в пакете, какВозможно ли разместить услугу в подпапке?

com.test.app 

, но НЕ в подпакет как

com.test.app.services.MyService 

В манифесте я пытался объявить его с

<service android:name=".services.MyService" /> 

или полностью квалифицированный

<service android:name="com.test.app.services.MyService" /> 

но ни один способ не работал. Я использую subpackages для лучшей структуры моих файлов. Так могу ли я действительно не поместить свой файл службы в подпакет, или я что-то упустил?

(я работаю с расширением Загрузчик библиотеки, представленной командой Android. Это предполагает реализацию простой сервис.)

+0

Вы должны быть в состоянии просто отлично. Как ваша служба «не работает»? Как вы начинаете свое обслуживание? – kabuko

+0

Я подклассифицирую DownloaderService, как описано [здесь] (http://developer.android.com/guide/market/expansion-files.html#DownloaderService), поэтому я не запускаю службу самостоятельно ... – Till

ответ

0

Да.

Я делал это много раз. Скорее всего, происходит что-то еще. Первое, что я должен проверить, это убедиться, что ваш Intent правильно сконструирован.

+0

Я являюсь подклассом DownloaderService, как описано [здесь] (http://developer.android.com/guide/market/expansion-files.html#DownloaderService), поэтому я не запускаю службу самостоятельно ... – Till

+0

@ Вот это ваша проблема. Просто потому, что вы подклассифицировали другую службу, это не значит, что она начинается с волшебства при запуске 'DownloaderService'. Это было бы плохо по целому ряду причин. Вам нужно будет начать свою «службу» самостоятельно. – Argyle

+0

Нет, он начинается с DownloaderLibrary (для файлов расширения), но только если он находится в основном пакете, объявленном в манифесте 'package =" com.test.app "' – Till

1

Да, вы можете разместить его в любом пространстве имен, которое захотите.

Помимо подкласса DownloaderService вам необходимо прочитать остальную часть документа, включая Starting the download. Особый интерес представляет эта линия:

// Start the download service (if required) 
int startResult = DownloaderClientMarshaller.startDownloadServiceIfRequired(this, 
       pendingIntent, SampleDownloaderService.class); 

Обратите внимание, что вам необходимо предоставить пользовательский класс Service здесь.

+1

Это очень странно. Я предоставляю свой собственный класс обслуживания, и, как я уже сказал, он работает (включая тестовую загрузку с серверов Google Play), но только если служба находится в основном пакете ... – Till

+0

@ та же проблема. Вам удалось это решить? – theV0ID

+0

@ theV0ID Если я правильно помню, я фактически оставил его в основном пакете ... – Till

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