尝试从Android中的活动启动服务时发生ClassNotFoundException
我正在尝试从我的活动开始一项服务,如下所示:尝试从Android中的活动启动服务时发生ClassNotFoundException,android,exception,service,Android,Exception,Service,我正在尝试从我的活动开始一项服务,如下所示: startService(new Intent(MyActivity.this, MyService.class)); <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true" android:enabled="true"> <servic
startService(new Intent(MyActivity.this,
MyService.class));
<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>
然而,有一个问题。什么也没发生。我在后台进行了调试,我可以看到引导类加载器在ClassNotFoundException中出错。我不知道怎么会发生这种情况,因为我在清单文件中获得了如下服务类:
startService(new Intent(MyActivity.this,
MyService.class));
<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()
也没有被调用。这种垃圾有时会发生。尝试清理项目
另外,如果您是从其他包启动服务,请尝试使用完整包,然后使用类名
Intent intent = new Intent();
intent.setClassName("com.example.Something", "com.example.Something.MyService");
startService(intent);
这种事情有时候会发生。尝试清理项目 另外,如果您是从其他包启动服务,请尝试使用完整包,然后使用类名
Intent intent = new Intent();
intent.setClassName("com.example.Something", "com.example.Something.MyService");
startService(intent);
这项服务是打包的吗?如果是这样,您可能需要使用清单中服务类的完整路径。服务是否在某个包中?如果是这样,您可能需要在清单中使用服务类的完整路径。只是一个想法:如果您转到项目的“bin”文件夹,应该有您的“*.apk”文件。将其重命名为zip,解压并调查是否存在您的服务类。我怀疑smth在构建步骤出错,而您的类不在apk中。删除bin文件夹中的所有内容,并设法从头开始重建项目。然后再次解压/检查。只是一个想法:如果你转到项目的“bin”文件夹,那里应该有你的“*.apk”文件。将其重命名为zip,解压并调查是否存在您的服务类。我怀疑smth在构建步骤出错,而您的类不在apk中。删除bin文件夹中的所有内容,并设法从头开始重建项目。然后再次解压缩/检查。尝试以下操作:
startService(new Intent(this, MyService.class));
如果仍然存在问题,请在Manifest.XML文件中将包名称固定到服务名称的开头,如下所示:
<service android:name="mypackagename.MyService"></service>
不知道你为什么会有“导出”代码 试试这个:
startService(new Intent(this, MyService.class));
如果仍然存在问题,请在Manifest.XML文件中将包名称固定到服务名称的开头,如下所示:
<service android:name="mypackagename.MyService"></service>
不知道你为什么会有“导出”代码 我已经试过了。我甚至重新启动了Eclipse和我的手机。我在我的另一部手机上也试过了,但它一直抛出那个异常…我已经试过了。我甚至重新启动了Eclipse和我的手机。我也在我的另一部手机上尝试过,但它一直抛出异常…谢谢,这解决了我的问题…我也打电话给adb卸载,只是为了确保从我的机器人上删除错误代码。谢谢,这解决了我的问题…我打电话给adb卸载,也是为了确保从我的机器人上删除错误代码。