尝试从Android中的活动启动服务时出现ClassNotFoundException

时间:2011-11-14 21:34:15

标签: android exception service

我正试图从我的活动中开始提供这样的服务:

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 个答案:

答案 0 :(得分:3)

这种废话有时会发生。尝试清理项目...

此外,如果您从其他软件包启动服务,请尝试使用完整软件包,然后使用类名。

Intent intent = new Intent();
intent.setClassName("com.example.Something", "com.example.Something.MyService");
startService(intent);

答案 1 :(得分:1)

只是一个想法:如果你去项目的“bin”文件夹,应该有你的“* .apk”文件。将其重命名为zip,解压缩并调查是否有您的服务类。我怀疑smth在构建步骤出错了,你的课程不在apk中。删除bin文件夹中的所有内容,并设法从头开始重建项目。然后再解压缩/检查。

答案 2 :(得分:0)

某些套餐中的服务是?如果是这样,您可能需要在清单中使用Service类的完整路径。

答案 3 :(得分:0)

试试这个:

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

如果您仍有问题,请在Manifest.XML文件中将软件包名称添加到服务名称的开头,如下所示:

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

不确定为什么你有“导出”代码。