Reinicialización de tejido de Twitter después de tiempo de inactividad aplicación android

Así que mi aplicación para Android tiene los siguientes componentes: una LoginActivity, una MainActivity que utiliza un Gaveta de Navegación, un montón de varios fragmentos que son manejados por el Nav Drawer en Main Activity.

En el LoginActivity, configuro TwitterAuthConfig y también lo pongo en Fabric.with (…. Twitter (authConfig) …), básicamente haciendo lo que dicen que hacer en la documentación: Documentación de integración de tejido

Después de que el usuario navega a través de LoginActivity y con éxito inicios de sesión, va a la actividad principal que abre el cajón de navegación y les permite seleccionar qué fragmento que quieren ir. El LoginActivity llama a this.finish () después de iniciar MainActivity.

Mi problema es que uno de los fragmentos que tengo utiliza una Timeline Timeline incrustado que necesita autenticación de tejido a través de la llamada Fabric.with (). Esto funciona bien la primera vez, pero una vez que salgo de la aplicación y se queda en segundo plano durante un tiempo, creo que onDestroy () se llama y, a continuación, la instancia de tela se elimina.

Por lo tanto, cuando lo vuelvo a abrir de nuevo desde el fondo, tiene el siguiente error:

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 

¿Alguna idea para solucionar este problema?

  • ¿Debería agregar una declaración Fabric.with () adicional en MainActivity?
  • ¿Debo estar captando IllegalStateException? ¿Si es así, donde?
  • ¿Estoy haciendo todo esto mal?

¡Gracias por su ayuda por adelantado!

Le sugeriría tener una BaseActivity y hacer que todas sus actividades amplíen BaseActivity .

onCreate función de esa base, inicializar la instancia de la Fabric si no se inicializa como esto:

 public class BaseActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (!Fabric.isInitialized()) { Fabric.with(....Twitter(authConfig)...) } //Do other stuff. } 

De esta manera usted se asegurará de que siempre se inicialice.

La tela tiene un método estático llamado isInitialized (). Así que la solución es comprobar si la tela se inicializa antes de cargar la línea de tiempo de Twitter.

Ejemplo:

 if (!Fabric.isInitialized()) { TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY,TWITTER_SECRET); Fabric.with(getActivity(), new Twitter(authConfig)); } // load Twitter Timelines 
  • ¿Cómo puedo publicar en Twitter con Intent Action_send?
  • Twitter Autenticación a través de las clases AccountManager de Android
  • OAuth + Twitter en Android: falla de devolución de llamada
  • Desarrollo de Aplicaciones de Twitter para Android y uso de TextView y Linkify
  • ListView setOnItemClickListener no desencadena cuando un elemento tiene un vínculo en ello
  • Twitpic Error - Nombre de usuario y contraseña no válidos
  • Android Twitter Fabric SDK conflicto con la biblioteca de soporte
  • Inicia sesión con Twitter en la aplicación de phonegap
  • Responder a un tweet mediante intentos, a través de la aplicación nativa de Android
  • ¿Dónde puedo encontrar el código fuente para las aplicaciones de gmail, facebook y twitter para Android? ¿Son incluso de código abierto?
  • Problema con Twitter PostActivity
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.