O ile wiem, nie masz kontroli nad zbieraniem śmieci. Interpreter JavaScript wykonuje to za Ciebie.
Zrobiłem coś podobnego w projekcie (pobieranie wielu obrazów), a także napotkano problemy z pamięcią. Najbardziej optymalnym rozwiązaniem, które znalazłem, jest to, aby umożliwić zbieranie śmieci. Powodem tego jest to, że interpreter JavaScript wykonuje twój kod, a jeśli przejrzysz wszystkie obrazy i pobierzesz je, może nie zabrać się do zbierania śmieci, zanim skończysz pobieranie. Oznacza to, że wszystkie tymczasowe obrazy pozostaną w pamięci.
Aby rozwiązać ten problem, należy użyć metody defer
- metody underscore.js lub funkcji setTimeout
. W sensie, co robią, jest to, że mówią tłumaczowi, że jest w porządku, aby uruchomić inne rzeczy przed tym, np. zbieranie śmieci.
Ten przykładowy kod (używając underscore.js) powinno dać ogólne pojęcie:
var images = [...many entries here...];
function downloadImage(index) {
//Make sure the index is valid
if(index < images.length) {
var httpClient = Ti.Network.createHttpClient({
onload: function() {
//Save the image to the filesystem.
_defer.(downloadImage, ++index); //Download the next image.
}
});
//Run the HttpClient here.
}
}
_.defer(downloadImage, 0); //Start the download sequence.
Istnieją również pewne znaczniki, które można ustawić w pliku tiapp.xml, ale z mojego doświadczenia wynika, że don” t dużo pomóc.
Te trzy teksty na "Utrzymanie odpowiedź APP" wyjaśnić punkt próbuję zrobić całkiem dobrze:
- Part 1: The problem
- Part 2: The reason
- Part 3: The solution
można podać kod? – 0101