Eğer varsa gereken bellek büyük miktarda kullanmak (ve korumak), o zaman evet, sen ve kullanmalıdır edebilirsinizandroid:largeHeap="true"
. Ancak bunu kullanırsanız, diğer uygulamalar ön plandayken uygulamanızın bellekten temizlenmesine hazırlıklı olmalısınız.
"Hazırlıklı olun" derken, bu olasılığa göre tasarlamanız gerektiğini kastediyorum, böylece sizin onStop()
ve onResume()
yöntemleriniz mümkün olduğunca verimli bir şekilde yazılırken, tüm ilgili durumun kaydedilmesini ve kullanıcıya kusursuz bir görünüm sunacak şekilde geri yüklenmesini sağlar.
Orada bu parametre ile ilgili üç yöntem vardır: maxMemory()
, getMemoryClass()
, ve getLargeMemoryClass()
.
Çoğu cihaz maxMemory()
için benzer bir değeri temsil edergetMemoryClass()
ikincisi megabayt cinsinden ifade edilse de, birincisi bayt cinsinden ifade edilse de, varsayılan olarak .
largeHeap
Parametreyi kullandığınızda, maxMemory()
cihaza özgü daha yüksek bir seviyeye yükseltilirken getMemoryClass()
aynı kalacaktır.
getMemoryClass()
yığın boyutunuzu sınırlamaz, ancak uygulamanızın üzerinde çalıştığınız belirli cihazın sınırları dahilinde rahat ve uyumlu bir şekilde çalışmasını istiyorsanız kullanmanız gereken yığın miktarını söyler .
maxMemory()
Buna karşılık, yok senin yığın boyutunu sınırlamak ve değerini artırarak yoluyla ek yığınına kazanç erişim yapmak ve böylece largeHeap
o değeri artar. Ancak, artan yığın miktarı hala sınırlıdır ve bu sınır cihaza özel olacaktır, bu da uygulamanızın çalıştığı cihazın kaynaklarına bağlı olarak uygulamanız için kullanılabilen yığın miktarının değişeceği anlamına gelir. Bu nedenle, kullanmak largeHeap
, uygulamanızın tüm tedbirlerden vazgeçmesi ve yiyebildiğiniz kadar yiyebileceğiniz büfede yolunu bulması için bir davet değildir.
Uygulamanız largeHeap
, yöntemi çağırarak parametreyi kullanarak belirli bir cihazda tam olarak ne kadar bellek kullanılabilir hale getirileceğini keşfedebilir getLargeMemoryClass()
. Döndürülen değer megabayt cinsindendir.
Bu önceki gönderi, largeHeap
parametrenin bir tartışmasının yanı sıra, birkaç belirli Android cihazında kullanımıyla ve kullanılmadan ne kadar yığın kullanılabilir hale getirildiğine dair birkaç örnek içerir:
Android'de uygulama yığın boyutunu algıla
Bu parametre true olarak ayarlandığında kendi uygulamalarımdan hiçbirini dağıtmadım. Ancak, uygulamalarımdan birinde, yalnızca geliştirme sırasında çalışan bir dizi optimizasyonla ilgili parametreyi derlemek için yoğun bellek kullanan bir kod var. largeHeap
Bu kodu çalıştırırken yetersiz bellek hatalarını önlemek için parametreyi yalnızca geliştirme sırasında ekliyorum . Ancak uygulamayı dağıtmadan önce parametreyi (ve kodu) kaldırıyorum.