So hat meine Android-App die folgenden Komponenten: eine LoginActivity, eine MainActivity, die eine Navigationsschublade, eine Reihe von verschiedenen Fragmenten, die von der Nav-Schublade in Main Activity behandelt.Re-Initialisierung von Twitter Fabric nach langer Idle-Zeit Android-App
Im LoginActivity, habe ich TwitterAuthConfig und füttern auch, dass in Fabric.with (.... Twitter (authconfig) ...), im Grunde tun, was sie sagen, in der Dokumentation zu tun: Fabric integration documentation
Nachdem der Benutzer durch LoginActivity navigiert und sich erfolgreich eingeloggt hat, wird die Hauptaktivität aufgerufen, die die Navigationsleiste öffnet und es ihnen ermöglicht, das gewünschte Fragment auszuwählen. Die LoginActivity ruft nach dem Start der MainActivity this.finish() auf.
Mein Problem ist, dass eines der Fragmente, die ich habe, eine Embedded Twitter Timeline verwendet, die Fabric Authentifizierung über den Fabric.with() Aufruf benötigt. Das funktioniert fein das erste Mal, aber sobald ich die App verlassen und es bleibt im Hintergrund für eine Weile, ich glaube onDestroy() wird aufgerufen und dann die Fabric-Instanz entfernt.
Deshalb, wenn ich es öffne wieder zurück aus dem Hintergrund, hat es die folgenden Fehler:
07-09 15:59:55.179 7933-7933/com.writers.myapp E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.writers.myapp, PID: 7933
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.writers.myapp/com.writers.myapp.MainActivity}: java.lang.IllegalStateException: Must Initialize Fabric before using singleton()
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2329)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2389)
at android.app.ActivityThread.access$900(ActivityThread.java:147)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1296)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
Caused by: java.lang.IllegalStateException: Must Initialize Fabric before using singleton()
at io.fabric.sdk.android.Fabric.singleton(Fabric.java:265)
at io.fabric.sdk.android.Fabric.getKit(Fabric.java:516)
at com.twitter.sdk.android.tweetui.TweetUi.checkInitialized(TweetUi.java:120)
at com.twitter.sdk.android.tweetui.TweetUi.getInstance(TweetUi.java:69)
at com.twitter.sdk.android.tweetui.TwitterListTimeline$Builder.<init>(TwitterListTimeline.java:108)
at com.myapp.newstimeline.TimelineFragment.onCreateView(TimelineFragment.java:49)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1120)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1929)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1220)
at android.app.Activity.performStart(Activity.java:5949)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2389)
at android.app.ActivityThread.access$900(ActivityThread.java:147)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1296)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
07-09 15:59:55.203 775-1192/? W/ActivityManager﹕ Force finishing activity com.writers.myapp/.MainActivity
Jede Idee, wie man dieses Problem zu beheben?
- Sollte ich eine zusätzliche Fabric.with() -Anweisung in MainActivity hinzufügen?
- Sollte ich IllegalStateException abfangen? Wenn ja, wo?
- Mache ich das alles falsch?
Vielen Dank für Ihre Hilfe im Voraus!