Android 尝试初始化服务(扩展IntentService类)时出错

Android 尝试初始化服务(扩展IntentService类)时出错,android,service,intentservice,Android,Service,Intentservice,我尝试在Android中使用服务,我的应用程序包含一个带有按钮的活动,这样当我按下它时它就可以执行操作。 核心组件是ExtractingURLService,它扩展了IntentService框架类。 我已经重写了onHandleIntent()方法,以便它能够正确处理传递给它的意图。 代码: Android清单文件是: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="e

我尝试在Android中使用服务,我的应用程序包含一个带有按钮的活动,这样当我按下它时它就可以执行操作。 核心组件是ExtractingURLService,它扩展了IntentService框架类。 我已经重写了onHandleIntent()方法,以便它能够正确处理传递给它的意图。 代码:

Android清单文件是:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="example.service.urlextraction"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="10" />
    <uses-permission android:name="android.permission.INTERNET"/>

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".ServiceExample02Activity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service android:name=".ExtractingURLService" android:enabled="true"></service>

    </application>
</manifest>
这是我所有的工作,但部署时,我收到的运行时错误是:

04-09 16:24:05.751:错误/AndroidRuntime(1078):由以下原因引起: java.lang.InstanceionException: 示例.service.urlextraction.ExtractingURLService


我该怎么办

添加服务的完整路径

<service android:name="com.foo.services.ExtractingURLService" android:enabled="true"></service>
您可以添加try-and-catch块以避免崩溃。这对我很有用

试试看{
Intent Intent=新的Intent(DashboardActivity.this、MyService.class);
startService(意向);
}捕获(非法状态){
}捕获(异常ee){

}
Hmm代码看起来不错,您尝试过刷新和清理项目吗?是的,我做过很多次,清理并生成,然后清理,然后生成:)实际上,我只是给它起了类名,而不是完整的限定名,好吧,试着添加整个包名,不工作所以你的文件包是:example.service.urlextraction.ExtractingURLService正确吗?我确实按照你的指示更改了我的构造函数,但是,它是一样的:(我把你的代码和我的更改放进去了,它工作得很好。我会把所有的更改都贴出来的。谢谢,它现在工作了。真奇怪:)不管怎样,它是安卓系统:)你们永远不应该隐藏这样的异常。记录它、处理它、再次抛出它,或者这三者的任意组合,但不要让捕获为空,因为这将使识别和调试任何问题几乎不可能。
Intent startServiceIntent =  new Intent(this, ExtractingURLService.class);
startService(startServiceIntent);
<service android:name="com.foo.services.ExtractingURLService" android:enabled="true"></service>
package com.foo.services;

import android.app.IntentService;
import android.content.Intent;

public class ExtractingURLService extends IntentService {

    private static final String TAG = "ExtractingURLService";

    public ExtractingURLService() {
        super("ExtractingURLService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        // do something here !
    }
}