Ponieważ nie mogłem znaleźć nikogo zgłaszającego to zachowanie, zanim pomyślałem o zamieszczeniu problemu i mojego rozwiązania, aby pomóc innym osobom mającym ten problem. Nasza aplikacja świetnie działała na urządzeniach przed ICS. Przetestowaliśmy naszą aplikację na Galaxy Nexus i emulatora ICS i zobaczyłem dziwne awarie procesowych z następujących rodzajów:KORUPCJA PAMIĘCI HEAP W błędach dlmalloc lub dlfree i SIGSEGV w systemie Android ICS 4.0
pamięci sterty korupcji w dlmalloc
uszkodzenie stosu Pamięć w dlfree
sygnału 11 (SIGSEGV) fault addr deadbaad
Problem polegał na tym, że awarie wystąpiły w natywnej przestrzeni, więc nie było żadnego napisanego przez siebie kodu, który wpłynąłby na to bezpośrednio. Ponieważ obsłużyliśmy wiele obrazów na listach, a system przydziela bitmapy dla tych, którzy przychodzili do głowy, tylko złe zarządzanie bitmapami. Sprawdziliśmy najlepsze praktyki w sieci i pomogliśmy GC zebrać niepotrzebne zasoby, dzwoniąc pod numer bitmap.recycle()
. W każdym razie, z jakiegoś nieznanego powodu, aplikacja ciągle ulegała awarii w systemie Android ICS 4.0.
Co skłoniło cię do usunięcia wywołania do recyklingu()? Jestem ciekawy, ponieważ doświadczam podobnego błędu, ale nie mam żadnych połączeń z Bitmap.recycle(). – JonnyBoy
Miałem ten sam problem i usunięcie wywołania funkcji "recycle()" rzeczywiście wykonało zadanie. – Houssni
Miałem ten sam problem i usunięcie 'Bitmap.recycle()' napraw to. Bez pomocnego logu, naprawdę trudno było znaleźć przyczynę problemu. Dziękuję @MarioB – Rami