ich ein neues Projekt mit einer Klasse erstellt haben, und mit dem folgenden Code aus diesem Beispiel genommen: https://developers.google.com/app-indexing/android/publish#add-app-indexing-api-callsSpeicherleck mit GoogleApiClient erkannt von Android Studio
Wenn i Drehen Sie das Gerät mehrmals und klicken Sie dann auf Dump Java Heap in Android Studio und dann auf Analysieren klicken. Ich werde ein Ergebnis bekommen, das zeigt, dass meine MainActivity durchgesickert ist.
Der Grund, warum ich dieses Beispielprojekt erstellt habe, ist, weil ich eine vorhandene App habe, die ein Memory Leak-Problem hat (StrictMode und Android Studio sagt), und meine Schlussfolgerung ist, dass es meine AppIndex-Code sind Problem.
Ist es ein Fehler in Android Studio oder ist es ein echtes Speicherleck?
public class MainActivity extends AppCompatActivity {
private GoogleApiClient mClient;
private Uri mUrl;
private String mTitle;
private String mDescription;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mClient = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
mUrl = Uri.parse("http://examplepetstore.com/dogs/standard-poodle");
mTitle = "Standard Poodle";
mDescription = "The Standard Poodle stands at least 18 inches at the withers";
}
public Action getAction() {
Thing object = new Thing.Builder()
.setName(mTitle)
.setDescription(mDescription)
.setUrl(mUrl)
.build();
return new Action.Builder(Action.TYPE_VIEW)
.setObject(object)
.setActionStatus(Action.STATUS_TYPE_COMPLETED)
.build();
}
@Override
public void onStart() {
super.onStart();
mClient.connect();
AppIndex.AppIndexApi.start(mClient, getAction());
}
@Override
public void onStop() {
AppIndex.AppIndexApi.end(mClient, getAction());
mClient.disconnect();
super.onStop();
}
}
Vielleicht sollten Sie in den GoogleApiClient.Builder-Code eintauchen, da er auf Ihre Aktivität verweist. Ich kann keinen anderen Code finden, den Sie veröffentlichen, der ein Leck verursachen kann. – SamMao
OnStop konnte nicht von os aufgerufen werden Sie sollten onPause onResume – greywolf82