Autore Topic: unable to istantiate service  (Letto 612 volte)

Offline psicomant

  • Utente junior
  • **
  • Post: 95
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    OSX 10.6.5
unable to istantiate service
« il: 17 Dicembre 2010, 11:14:12 CET »
0
Salve.
Dentro una classe Starter che estende Service, faccio:
Codice (Java): [Seleziona]
// start sos feeder to register all enabled sensor to SOS server...
        Intent i = new Intent(StartStop.this, Boot.class);
        Log.v(TAG, "BEFORE START BOOT SERVICE");
        startService(i);
        Log.v(TAG, "AFTER START BOOT SERVICE");

ma quando esegue, crasha, dandomi il seguente errore:
Codice: [Seleziona]
12-17 11:05:38.984: VERBOSE/StartStop(1813): BEFORE START BOOT SERVICE
12-17 11:05:39.015: VERBOSE/StartStop(1813): AFTER START BOOT SERVICE
12-17 11:05:39.115: DEBUG/dalvikvm(1813): newInstance failed: no <init>()
12-17 11:05:39.115: DEBUG/AndroidRuntime(1813): Shutting down VM
12-17 11:05:39.125: WARN/dalvikvm(1813): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
12-17 11:05:39.155: ERROR/AndroidRuntime(1813): FATAL EXCEPTION: main
12-17 11:05:39.155: ERROR/AndroidRuntime(1813): java.lang.RuntimeException: Unable to instantiate service cloudsensor.csams.Boot.Boot: java.lang.InstantiationException: cloudsensor.csams.Boot.Boot
12-17 11:05:39.155: ERROR/AndroidRuntime(1813):     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2943)
12-17 11:05:39.155: ERROR/AndroidRuntime(1813):     at android.app.ActivityThread.access$3300(ActivityThread.java:125)
12-17 11:05:39.155: ERROR/AndroidRuntime(1813):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2087)
12-17 11:05:39.155: ERROR/AndroidRuntime(1813):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-17 11:05:39.155: ERROR/AndroidRuntime(1813):     at android.os.Looper.loop(Looper.java:123)
12-17 11:05:39.155: ERROR/AndroidRuntime(1813):     at android.app.ActivityThread.main(ActivityThread.java:4627)
12-17 11:05:39.155: ERROR/AndroidRuntime(1813):     at java.lang.reflect.Method.invokeNative(Native Method)
12-17 11:05:39.155: ERROR/AndroidRuntime(1813):     at java.lang.reflect.Method.invoke(Method.java:521)
12-17 11:05:39.155: ERROR/AndroidRuntime(1813):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-17 11:05:39.155: ERROR/AndroidRuntime(1813):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-17 11:05:39.155: ERROR/AndroidRuntime(1813):     at dalvik.system.NativeStart.main(Native Method)
12-17 11:05:39.155: ERROR/AndroidRuntime(1813): Caused by: java.lang.InstantiationException: cloudsensor.csams.Boot.Boot
12-17 11:05:39.155: ERROR/AndroidRuntime(1813):     at java.lang.Class.newInstanceImpl(Native Method)
12-17 11:05:39.155: ERROR/AndroidRuntime(1813):     at java.lang.Class.newInstance(Class.java:1429)
12-17 11:05:39.155: ERROR/AndroidRuntime(1813):     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2940)
12-17 11:05:39.155: ERROR/AndroidRuntime(1813):     ... 10 more
12-17 11:05:39.185: WARN/ActivityManager(59):   Force finishing activity cloudsensor.csams/.UserInterface.InterfaceCSAMSTab


Non riesco a capire cosa succeda, perche' richiamo il service come ho sempre fatto, cioe' creando un intent e facendo startservice.

Qualcuno puo aiutarmi?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:unable to istantiate service
« Risposta #1 il: 17 Dicembre 2010, 12:29:18 CET »
0
Nel tuo Service devi avere un costruttore che non accetta parametri.

Offline psicomant

  • Utente junior
  • **
  • Post: 95
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    OSX 10.6.5
Re:unable to istantiate service
« Risposta #2 il: 17 Dicembre 2010, 14:27:03 CET »
0
Ma basta anche un costruttore vuoto come
Codice (Java): [Seleziona]
        // cosnstructor without parameters
        public Boot(){
        }

 ???

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:unable to istantiate service
« Risposta #3 il: 17 Dicembre 2010, 14:57:49 CET »
0
Provare?

Offline psicomant

  • Utente junior
  • **
  • Post: 95
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    OSX 10.6.5
Re:unable to istantiate service
« Risposta #4 il: 17 Dicembre 2010, 15:26:09 CET »
0
Provato e funziona! :)

Ma come mai ha necessita' di un costruttore vuoto?
Il service non dovrebbe fare tutto tramite onCreate -> onStart?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:unable to istantiate service
« Risposta #5 il: 17 Dicembre 2010, 15:39:25 CET »
0
Si ma il framework quando instanzia la classe del service tramite reflection cerca un costruttore senza parametri. Altrimenti lui come fa a sapere cosa deve passare?
La stessa vale per le activity e per i broadcastreceiver...