我正试图从我的活动中开始提供这样的服务:
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()
也未被调用。
答案 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>
不确定为什么你有“导出”代码。