首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的原因是: java.lang.InstantiationException用于以下内容

我的原因是: java.lang.InstantiationException用于以下内容
EN

Stack Overflow用户
提问于 2013-10-10 07:03:12
回答 2查看 2.9K关注 0票数 1

我是从报警处打电话来的。我得到了InstantiationException

代码语言:javascript
运行
复制
public class OnAlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    // PullPendingRequests.acquireStaticLock(context);
    Toast.makeText(context, "Don't panik but your time is up!!!!.", Toast.LENGTH_LONG).show();
    Log.d("Taxeeta:PullPendingRequets", "CallService Location");
    context.startService(new Intent(context, DriverService.class));
}
}

我的服务代码

代码语言:javascript
运行
复制
public class DriverService extends Service {
private String identityHash;

private WakeLock mWakeLock;

public DriverService(String identityHash) {
    this.identityHash = identityHash;
}
@Override
public IBinder onBind(Intent intent) {
    return null;
}

private void handleIntent(Intent intent) {
}

private class PollTask extends AsyncTask<Void, Void, Void> {
        //MY STUFF HERE
}
@Override
public void onStart(Intent intent, int startId) {
    handleIntent(intent);
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    handleIntent(intent);
    return START_NOT_STICKY;
}
public void onDestroy() {
    super.onDestroy();
    mWakeLock.release();
}
}

编辑:我的报表代码

代码语言:javascript
运行
复制
<service
        android:name=".DriverService"
        android:enabled="true"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Light.NoTitleBar" />

    <receiver
        android:name="com.taxeeta.support.OnAlarmReceiver"
        android:exported="true" >
        <intent-filter>
            <action android:name="android.intent.action.NOTIFY" />
        </intent-filter>
    </receiver>

编辑:下面的例外

代码语言:javascript
运行
复制
10-10 12:56:09.550: E/AndroidRuntime(11886): FATAL EXCEPTION: main
10-10 12:56:09.550: E/AndroidRuntime(11886): java.lang.RuntimeException: Unable to instantiate service com.taxeeta.DriverService: java.lang.InstantiationException: com.taxeeta.DriverService
10-10 12:56:09.550: E/AndroidRuntime(11886):    at android.app.ActivityThread.handleCreateService(ActivityThread.java:1933)
10-10 12:56:09.550: E/AndroidRuntime(11886):    at android.app.ActivityThread.access$2500(ActivityThread.java:117)
10-10 12:56:09.550: E/AndroidRuntime(11886):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:989)
10-10 12:56:09.550: E/AndroidRuntime(11886):    at android.os.Handler.dispatchMessage(Handler.java:99)
10-10 12:56:09.550: E/AndroidRuntime(11886):    at android.os.Looper.loop(Looper.java:130)
10-10 12:56:09.550: E/AndroidRuntime(11886):    at android.app.ActivityThread.main(ActivityThread.java:3687)
10-10 12:56:09.550: E/AndroidRuntime(11886):    at java.lang.reflect.Method.invokeNative(Native Method)
10-10 12:56:09.550: E/AndroidRuntime(11886):    at java.lang.reflect.Method.invoke(Method.java:507)
10-10 12:56:09.550: E/AndroidRuntime(11886):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
10-10 12:56:09.550: E/AndroidRuntime(11886):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
10-10 12:56:09.550: E/AndroidRuntime(11886):    at dalvik.system.NativeStart.main(Native Method)
10-10 12:56:09.550: E/AndroidRuntime(11886): Caused by: java.lang.InstantiationException: com.taxeeta.DriverService
10-10 12:56:09.550: E/AndroidRuntime(11886):    at java.lang.Class.newInstanceImpl(Native Method)
10-10 12:56:09.550: E/AndroidRuntime(11886):    at java.lang.Class.newInstance(Class.java:1409)
10-10 12:56:09.550: E/AndroidRuntime(11886):    at android.app.ActivityThread.handleCreateService(ActivityThread.java:1930)
10-10 12:56:09.550: E/AndroidRuntime(11886):    ... 10 more
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-10 07:32:59

您不应该定义服务类的参数构造函数。因此,删除代码

代码语言:javascript
运行
复制
public DriverService(String identityHash) {
    this.identityHash = identityHash;
}

因为添加了构造函数,所以android找不到空的构造函数。所以把它移开。

尽管可以对服务使用空构造函数。喜欢

代码语言:javascript
运行
复制
public DriverService() {
    super("DriverService");
}
票数 3
EN

Stack Overflow用户

发布于 2013-10-10 07:39:34

服务需要由Android实例化的空构造函数。

代码语言:javascript
运行
复制
public DriverService() {
}

此外,不可能将identityHash传递给构造函数,因为您在任何地方都没有指定它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19289141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档