2015-08-21 29 views
10

Ho provato a creare un modulo social per la mia app, qualcosa come wrapper, che conterrà i modelli di integrazione di Google +, Facebook e Twitter.Alcune perdite di memoria in Facebook SDK

Ora sto lavorando con Facebook SDK e ha deciso di utilizzare LeakCanary nella mia app, dopo il log successo nel Ho ruotato le poche volte dispositivo, e vedere le seguenti informazioni:

enter image description here

Ecco MainActivity. classe:

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ButterKnife.bind(this); 
    setFragment(); 

} 
private void setFragment(){ 
    getSupportFragmentManager() 
      .beginTransaction() 
      .add(R.id.container, new MainFragment()) 
      .commit(); 
} 
} 

Ecco come accedo a facebook:

public void configureFacebook(@NonNull Fragment fragment, 
           @Nullable String permissions, @Nullable String requestFields) { 
    setPermissionAndRequestFields(permissions, requestFields); 
    loginManager = LoginManager.getInstance(); 
    callbackManager = CallbackManager.Factory.create(); 
    loginManager.registerCallback(callbackManager, facebookCallback); 
    loginManager.logInWithReadPermissions(fragment, Arrays.asList(this.permissions)); 
    loginManager=null; 

} 

ho provato il login utilizzando pulsante Login Anche in questo caso prendo questo problema e nuovo, con le seguenti informazioni:

enter image description here

ecco come lo accedere utilizzando LoginButton.class:

public void configureFacebook(@NonNull Fragment fragment, 
           @Nullable String permissions, @Nullable String requestFields, @NonNull LoginButton button) { 
    callbackManager = CallbackManager.Factory.create(); 
    setFbButton(button); 
    setPermissionAndRequestFields(permissions, requestFields); 
    fbButton.setFragment(fragment); 
    fbButton.setReadPermissions(this.permissions); 
    fbButton.registerCallback(callbackManager, facebookCallback); 

} 

Non riesco a capire come risolvere questi problemi. Cosa sto facendo di sbagliato?

AGGIORNAMENTO: la perdita di Facebook Activity.class è stata visualizzata senza il dispositivo di rotazione.

+0

Hey Denis. Sto usando anche Leaky Canary e sto affrontando lo stesso identico problema. Qualche progresso/soluzione a questo ?? – Rohan

+0

@Rohan, Ciao! Mi sono trasferito all'ultima versione del sdk di Facebook, ma non l'ho verificato con LeakCanary, nel mio progetto non avevo scelta e uso questo sdk con perdite. –

+0

Anche io sto usando l'ultimo sdk di Facebook. Ricevo i log che mi dicono sia FacebookActivity trapelato, sia la perdita relativa al LoginManager. Non ho idea di come risolvere questi problemi al momento. – Rohan

risposta

1

Sembra che potrebbero aver corretto questo per Facebook SDK versione 4.2.0. see here

L'aggiornamento dell'SDK di Facebook può essere la soluzione al tuo problema.

+0

Grazie, per la risposta, ma il commit è datato 2 giu, Ho provato questo meno di un mese fa –

+0

Quale versione di Facebook SDK stai usando? –

+1

Non OP. Appena provato 4.2.0, perde ancora, lo stesso del primo screenshot. – DariusL

1

L'ho aggiornato a 4.7.0 e penso che questo problema sia stato risolto.

+1

@Denis. Ops. Sembra che questo problema non si verifichi se hai installato l'app di Facebook - penso che avrebbero potuto risolvere il problema dal momento che in passato era già successo. Tuttavia, se non si dispone dell'app e viene visualizzata la finestra di dialogo di accesso, si verifica ancora !! Spero che ci sia una soluzione a questo ASAP. – Rohan

1

Risolto in 4.10. Ho provato senza app di facebook e controllato con il gestore della memoria.