2013-10-10 75 views
1

我正在從報警中調用服務。我得到InstantiationException我得到了:下面的java.lang.InstantiationException異常

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)); 
} 
} 

我的服務代碼

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(); 
} 
} 

編輯: 我的清單代碼

<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> 

編輯:異常下面

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 
+2

你應該粘貼異常的堆棧跟蹤 –

回答

3

您不應該定義Service類的參數構造函數。所以刪除代碼

public DriverService(String identityHash) { 
    this.identityHash = identityHash; 
} 

因爲你添加的構造函數,機器人無法找到空的構造函數。所以刪除那


儘管您可以使用空的構造函數來訪問服務。像

public DriverService() { 
    super("DriverService"); 
} 
0

服務需要一個空的構造函數由Android

public DriverService() { 
} 

被實例化。此外,也沒有辦法identityHash可以傳遞給構造函數,因爲你無處指定。

相關問題