ClassNotFoundException при попытке запустить службу из действия в Android - PullRequest
0 голосов
/ 15 ноября 2011

Я пытаюсь запустить службу из своей деятельности следующим образом:

startService(new Intent(MyActivity.this,
                MyService.class));

Однако существует проблема.Ничего не произошло.Я отладил за кулисами, и я вижу, что BootClassLoader срабатывает на ClassNotFoundException.Я не знаю, как это может произойти, потому что я получил свой класс Service в файле манифеста, например так:

<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true" android:enabled="true">
        <service android:name=".MyService" android:exported="false"></service>
        ...
    </application>

, и он находится в том же пакете, что и MyActivity.Я немного чокнутый здесь.В чем может быть проблема?Я отладил в MyService, но onCreate() и onStartCommand() также не вызывается.

Ответы [ 4 ]

3 голосов
/ 15 ноября 2011

Такая хрень просто случается иногда.Попробуйте очистить проект ...

Кроме того, если вы запускаете службу из другого пакета, попробуйте использовать полный пакет, а затем имя класса.

Intent intent = new Intent();
intent.setClassName("com.example.Something", "com.example.Something.MyService");
startService(intent);
1 голос
/ 15 ноября 2011

Просто идея: если вы перейдете в папку «bin» проекта, там должен быть ваш файл «* .apk». Переименуйте его в zip, распакуйте и выясните, есть ли у вас класс обслуживания. Я подозреваю, что что-то пошло не так на этапе сборки, а ваш класс не в apk. Удалите все, что находится в папке bin, и сможете восстановить проект с нуля. Затем разархивируйте / проверьте снова.

0 голосов
/ 15 ноября 2011

Попробуйте:

startService(new Intent(this, MyService.class));

Если проблема не устранена, в файле Manifest.XML укажите имя пакета в начале имени службы следующим образом:

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

Не уверен, почему у вас там этот "экспортированный" код.

0 голосов
/ 15 ноября 2011

Услуга входит в какой-то пакет? в этом случае вам может понадобиться использовать полный путь класса Service в манифесте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...