1

Я получаю исключение InstantiationException, когда я пытаюсь запустить IntentService. Я смотрел на другие темы здесь, но ответы не решают мою проблему. У моего класса сервиса есть конструктор по умолчанию. Вот мой класс обслуживания. (Он определен в файле FindMeService.java, и это единственный класс в этом файле.)Android InstantationException: пустой конструктор

package com.findme.findme; 
import android.app.IntentService; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.content.LocalBroadcastManager; 

public class FindMeService extends IntentService { 

/*public static class Constants {  

}*/ 

public static final String BROADCAST_ACTION = "com.findme.findme.BROADCAST"; 
public static final String ACTION_REGISTER_USER = "com.findme.findme.REGISTER_USER"; 
public static final String KEY_USERID = "user_id"; 
public static final String KEY_USERPASS = "user_pass"; 
public static final String RESPONSE_FOR = "response_for"; 
public static final String RESPONSE_VAL = "response_val"; 

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

@Override 
protected void onHandleIntent(Intent intent) { 
    // TODO handle intent 
    if(intent.getAction() == ACTION_REGISTER_USER) { 
     CommunicationsManager commManager = new CommunicationsManager(); 

     // get extras from the intent 
     Bundle details = intent.getExtras(); 
     String userId = (String) details.get(KEY_USERID); 
     String password = (String) details.get(KEY_USERPASS); 

     // send the register request 
     String result = commManager.Register(userId, password); 

     // put the result into an intent and broadcast it 
     Intent resultIntent = new Intent(BROADCAST_ACTION); 
     resultIntent.putExtra(RESPONSE_FOR, ACTION_REGISTER_USER) 
      .putExtra(RESPONSE_VAL, result); 
     LocalBroadcastManager.getInstance(this).sendBroadcast(resultIntent); 
    } 
} 

}

Я начинаю службу, сделав вызов StartService() изнутри деятельности. Журналы гласят:

E/AndroidRuntime(1048): java.lang.RuntimeException: Unable to instantiate service 
com.findme.findme.FindMeService: java.lang.InstantiationException: can't instantiate 
class com.findme.findme.FindMeService; no empty constructor 

Вот как я начинаю службу

... 
Intent registerUserIntent = new Intent(this, FindMeService.class); 
    registerUserIntent 
      .setAction(FindMeService.ACTION_REGISTER_USER); 
    registerUserIntent.putExtra(FindMeService.KEY_USERID, 
      phoneNumber).putExtra(FindMeService.KEY_USERPASS, 
      password); 

    // start the service 
    startService(registerUserIntent); 
... 

Вот релевантную часть файла манифеста

.... 
<service 
     android:name=".FindMeService" 
     android:exported="false" 
     android:enabled="true"/> 
... 
+1

@ Рагхунандан: Нет, это должно быть правильно. – CommonsWare

+0

Вы уверены, что исключение исходит из этой версии кода? Возможно, вам захочется полностью удалить, а затем попробуйте еще раз, чтобы быть уверенным. – CommonsWare

+0

@CommonsПодтвердите ли вы http://developer.android.com/reference/android/app/IntentService.html#IntentService(java.lang.String) – Raghunandan

ответ

2

Проблема была решена, и ее оказывается, что это было связано с некоторой ошибкой в ​​эмуляторе или в Eclipse. Проблема была решена после того, как я перезапустил Eclipse и снял флажок «Запустить форму снимка» и проверил опцию «Протирать пользовательские данные» перед запуском эмулятора. Спасибо всем, кто заглянул в этот вопрос. Я тоже был полностью озадачен всем вопросом.

+0

Пожалуйста, отметьте этот вопрос как можно скорее. – Emmanuel

+0

Это не окончательное решение –

Смежные вопросы