Stworzyłem nowy projekt z jednej klasy i z następującego kodu pobranego z tego przykładu: https://developers.google.com/app-indexing/android/publish#add-app-indexing-api-callsprzeciek pamięci z GoogleApiClient wykryte przez Android Studio
Kiedy Obróć urządzenie kilka razy, a następnie kliknąć na Dump Java Heap w Android Studio, a następnie kliknij Analizuj. Otrzymam wynik pokazujący, że moja MainActivity wyciekła.
Powodem, dla którego utworzyłem ten przykładowy projekt jest to, że mam istniejącą aplikację, która ma problem z przeciekiem pamięci (StrictMode i Android Studio tak mówi), a mój wniosek jest taki, że to mój kod AppIndex powoduje problem.
Czy to błąd w Android Studio, czy jest to prawdziwy wyciek pamięci?
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();
}
}
Może powinieneś zagłębić się w kod GoogleApiClient.Builder, ponieważ odwołuje się do Twojej aktywności. Nie mogę znaleźć innego opublikowanego przez Ciebie kodu, który może spowodować wyciek. – SamMao
OnStop może nie być wywoływany przez OS, powinieneś użyć onPause onResume – greywolf82