2013-05-23 2 views
13

Ich entwickle und Android Countdown App.

In der App können Sie so viele Countdowns hinzufügen oder löschen, wie Sie möchten.

Alle Countdowns werden in einer ArrayList gespeichert. Ich kann sie nicht einfach in einer Datenbank oder in den freigegebenen Einstellungen speichern, da der Countdown auch dann ausgeführt werden muss, wenn Sie die App verlassen.

Ich benutze Roboguice 2.0 und Guice-3.0-no_aop.jar, um meine Abhängigkeit Injektionen zu behandeln.

Die meiste Zeit alles funktioniert gut, aber manchmal, wenn ich die App starte, bekomme ich nur die folgende Warnung und alle Variablen wie die Arraylist, wo ich die Countdowns gespeichert habe, sind wieder leer.

05-21 13:07:33.260: W/nalizableReferenceQueue(14417): Could not load Finalizer in its own class loader. Loading Finalizer in the current class loader instead. As a result, you will not be able to garbage collect this class loader. To support reclaiming this class loader, either resolve the underlying issue, or move Google Collections to your system class path. 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): java.io.FileNotFoundException: com/google/inject/internal/util/$Finalizer.class 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.internal.util.$FinalizableReferenceQueue$DecoupledLoader.getBaseUrl(FinalizableReferenceQueue.java:269) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.internal.util.$FinalizableReferenceQueue$DecoupledLoader.loadFinalizer(FinalizableReferenceQueue.java:253) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.internal.util.$FinalizableReferenceQueue.loadFinalizer(FinalizableReferenceQueue.java:175) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.internal.util.$FinalizableReferenceQueue.<clinit>(FinalizableReferenceQueue.java:100) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.internal.util.$MapMaker$QueueHolder.<clinit>(MapMaker.java:787) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.internal.util.$MapMaker$WeakEntry.<init>(MapMaker.java:946) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.internal.util.$MapMaker$Strength$1.newEntry(MapMaker.java:312) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.internal.util.$MapMaker$StrategyImpl.newEntry(MapMaker.java:498) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.internal.util.$MapMaker$StrategyImpl.newEntry(MapMaker.java:419) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.internal.util.$CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2029) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.internal.Annotations$AnnotationChecker.hasAnnotations(Annotations.java:116) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.internal.Annotations.isBindingAnnotation(Annotations.java:180) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.Key.ensureIsBindingAnnotation(Key.java:366) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.Key.strategyFor(Key.java:338) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.Key.get(Key.java:272) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.internal.AbstractBindingBuilder.annotatedWithInternal(AbstractBindingBuilder.java:82) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.internal.ConstantBindingBuilderImpl.annotatedWith(ConstantBindingBuilderImpl.java:49) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at roboguice.config.DefaultRoboModule.configure(DefaultRoboModule.java:121) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.AbstractModule.configure(AbstractModule.java:59) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.spi.Elements.getElements(Elements.java:101) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.google.inject.spi.Elements.getElements(Elements.java:78) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at roboguice.RoboGuice.setBaseApplicationInjector(RoboGuice.java:81) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at roboguice.RoboGuice.setBaseApplicationInjector(RoboGuice.java:137) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at roboguice.RoboGuice.getBaseApplicationInjector(RoboGuice.java:57) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at roboguice.RoboGuice.getInjector(RoboGuice.java:147) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at roboguice.activity.RoboFragmentActivity.onCreate(RoboFragmentActivity.java:50) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at de.neosit.grafzahl.MainActivity.onCreate(MainActivity.java:38) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at android.app.Activity.performCreate(Activity.java:4637) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1051) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at android.app.ActivityThread.access$600(ActivityThread.java:127) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1151) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at android.os.Looper.loop(Looper.java:137) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at android.app.ActivityThread.main(ActivityThread.java:4499) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at java.lang.reflect.Method.invokeNative(Native Method) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at java.lang.reflect.Method.invoke(Method.java:511) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) 
05-21 13:07:33.260: W/nalizableReferenceQueue(14417): at dalvik.system.NativeStart.main(Native Method) 

Ich kann nicht herausfinden, was dieses Problem verursacht. Ich habe gelesen, dass jemand das gleiche Problem hatte, aber das allgemeine Gefühl war, dass dies nur eine Warnung ist und ignoriert werden kann. Also vielleicht etwas anderes verursacht das Zurücksetzen der Variablen.

Ich hoffe, Sie können mir helfen. Danke im Voraus.

+0

Ich bekam diesen Fehler auch. Aber später, wenn ich verschiedene Wege versuche, finde ich eine Null-Ausnahme und mache es so. Es kann dir helfen. http://StackOverflow.com/Questions/17062640/what-is-wrong-with-roboguice – nesimtunc

+0

Wählen Sie eine Antwort für diese –

Antwort

9

In Android Studio, ich geändert build.gradle Abhängigkeiten.

dependencies { 
    ... 
    compile 'com.google.inject:guice:4.0-beta:no_aop' 
    compile 'org.roboguice:roboguice:2.0' 
} 
+2

Du hast was verändert? – Fadils

6

Dies scheint ein Problem mit guide 3.0 no_aop. Ich verbesserte auf guice 4.0 (beta) no_aop und das Problem ging weg.

<dependency> 
    <groupId>com.google.inject</groupId> 
    <artifactId>guice</artifactId> 
    <version>4.0-beta</version> 
    <classifier>no_aop</classifier> 
</dependency> 

Sie brauchen auch einen Ausschluss auf die ursprüngliche roboguice Abhängigkeit hinzuzufügen:

<dependency> 
    <groupId>org.roboguice</groupId> 
    <artifactId>roboguice</artifactId> 
    <version>2.0</version> 
    <scope>compile</scope> 
    <exclusions> 
     <exclusion> 
      <groupId>com.google.inject</groupId> 
      <artifactId>guice</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 
+1

Ich tat das gleiche und es hat funktioniert. Ich werde die Beta-Version nicht in meiner Produktionsversion verwenden, aber trotzdem gut zu wissen. – Christof

1

Nach this issue ist das Problem eine oberflächliche. Es bietet mehrere kreisförmig referenzierte Hasenlöcher, um es zu erklären, ich gab nach den ersten paar auf. Der Kern davon ist, dass es nicht richtig Müll gesammelt werden kann und dass, wenn Sie "funky Classloader Sachen" machen, Sie Probleme bekommen können.

Für mich führte die Aktualisierung auf Guice 4.0-Beta zu einem Fehler bezüglich com.google.inject.utils.$ImmutableList, der problematischer als das (scheinbar) oberflächliche Finalizer-Problem ist.