SORU
17 Ocak 2013, PERŞEMBE


Android faaliyetleri yok etmek, süreçleri öldürür

Merhaba Android bellek yönetmek nasıl merak ediyorum ve kesin bir cevap bulamıyorum. Hadi ben şimdiki aktivite 5 aktivite ile bir yığın uygulama var varsayalım (4 durdurulur ve 1 sürdürülür), hizmet bağlı. Benim tüm faaliyetlerinin durdurulması için EV düğmesine basın. Başka bir bellek tüketen uygulama ve genel cihaz hafızası düşük olmaya başlıyor başladım. Ve bir soru

... Ne başvurum ne olacak?

  1. Benim sistem faaliyetlerinin yalnızca bir ya da bazı bellek kurtarmak için yok edebilir?
  2. Benim sistem uygulama tüm süreç öldürecek? Tüm hareketler güzel yok mu olacak?
  3. Öldürülmüştü tamamen benim uygulama geri dönünce ne olacak? Will onu başından uzaklaştırmak (ilk başlangıç) ya da denemek kurtarma faaliyetlerine previeous devlet / evet - sadece bir top yığını, ya da hepsini mi?

GÜNCELLEME:

Bu soruyu sormadan önce Aktivite yaşam döngüsü birkaç kez gördüm ama sorularıma cevap yok. Bazı testler yaptım ve bazı cevaplar var. ""Test için bir ipucu DDMS. durdurma işlemi

Soru için kılavuzda dediği gibi 1, ama cevap test etmedim:

Eğer bir faaliyeti durdurulmuş veya durdurulursa, sistem aktivitesini düşürebilir ya da bitirmek isteyerek bellek veya basitçe öldürme süreç.

Bu faaliyetlerden biri veya daha nazikçe yok(onDestroy metodu ile) süreci öldürmeden olabilir gibi görünüyor. Sadece onları geri almak için zaman (onCreate paket) olacaktır.

Soru 2 cevap:

EVET. Genellikle bu sistem tüm veri faaliyetler ve statik alanları da dahil olmak üzere yok olduğu anlamına gelir tüm süreci öldürür. Bu güzel bitmiş DEĞİL - onDestroy veya finialize alamazsın() duraklatılmış/için faaliyetleri durduruldu. Bu yüzden saveİnstanceState() sadece onPause metodu daha önce de aradı. onPause temelde bu yöntem, ardından hiç onStop veya onDestroy görebiliyordu çünkü bir şeyler kaydetmeniz gereken son yöntemdir. Sistem sadece inancı neyse ve her ne yapıyorlarsa, sürecin tüm nesneleri yok etmek öldürmek.

Soru 3 cevap:

Sen hayatını bir uygulamaya geldiğinde ne olacak?

  • Önce 2.2 - Android uygulama için uzaklaştırmak, başlatıcısı aktivite ile başlayacak.
  • 2.2 - sistem başlayarak önceki uygulama durumuna geri yüklemek olacaktır. Bu ne anlama geliyor? Görünen son etkinliği (onCreate paket) oluşturulur anlamına gelir. Ne olacak aktivite yığını? Yığın gayet iyi ama tüm aktiviteleri öldü. Her biri geri geri düğmesi ile alınca yeniden (onCreate paket) olacaktır. Bu konuda bir şey daha var:

Normalde, sistemin bir görev temizler (siler tüm aktiviteleri kullanıcı kök faaliyeti yukarıda yığın) bazı durumlarda yeniden seçer ana ekrandan bu görev. Tipik olarak, bu yapılır kullanıcı belirli bir süre için görev gibi gelmedi 30 dakika.

Sonuç?

  1. Etkinlik rotasyon sorunları ele çözülebileceğini sanmıyorum android:configChanges="". oryantasyon Ne zaman olacak bu bile farkında olmayan pek çok başka sorun.
  2. DDMS ile uygulama süreci Stop düğmesi Test. See This
  3. Statik değişkenleri kullanırken dikkatli olun. 1 - aktivite onları başlatıldı etkinlik 2 onları başlatıldı sanmıyorum. Başlatma küresel statiği için tek güvenli yer Uygulaması sınıf olacaktır.
  4. Hiç onStop veya onDestroy görebilirsiniz unutmayın. Yakın dosyalar/veritabanları, onPause dur indirenler. App BG bir şeyler yapmak istediğinizde ön plan Hizmeti kullanın.

O kadar yani ... benim ile essey :) Umarım yardımcı olmuşumdur

CEVAP
17 Ocak 2013, PERŞEMBE


Lütfen şuna bir bakın önce:

img1

() onPauseSistem işlemine başlamak üzereyken aradı önceki aktivite. Bu, tipik olarak kaydedilmemiş değişiklikleri kaydetmek için kullanılır dur animasyonlar ve olabilir diğer şeyler kalıcı veri alıcı CPU, vb. Bu yöntemin uygulaması çok hızlı olmalı bir sonraki etkinlik bu yöntem kadar devam edecek çünkü verir. Faaliyet geri dönerse ya onResume izledi() eğer kullanıcı için görünmez olur. ön veya onStop()

() onStopAktivite başka bir aktivite sürdürüldü ve bu örtü olduğu için artık kullanıcı tarafından görülebilir, ne zaman aradı bir. Bu yeni bir etkinlik başlatılıyor olduğundan da olabilir varolan bir bu önüne ediliyor, ya da bu tahrip ediliyor. Eğer bu etkinliği ise ya onRestart izledi() kullanıcı ile etkileşim için geliyor, veya onDestroy() bu etkinliğin olup gidiyor.

Ne zaman basın "" cihazınızda düğmesi, geçerli ön plan etkinliği onPause() üzerine konur sonra onStop(), diğeri 4 onStop() . kalmalıdır EVE

Google'a göre Belgeler:

  • Ekran (yığının en üstünde) ön planda olduğu bir aktivite varsa, aktif veya çalışır.
  • Bir aktivite odağı kaybetti ama hala görünüyor (non-tam-boy ya da şeffaf etkinlik üstüne odağı olan yeni bir ise etkinlik), durakladı. Bir aktivite tamamen hayatta duraklatılmış ( tüm devlet ve üye bilgilerini saklar ve bağlı kalır pencere yöneticisi), ama öldürülebilir aşırı düşük sistem tarafından durumlar.
  • Eğer bir etkinlik tamamen başka bir aktivite ile örtülü, durdu. Yine de tüm devlet ve üye bilgileri, ancak,korur penceresi gizli ve çok kullanıcı için artık görünür durumda sık sık hafıza başka bir yerde ihtiyaç olduğu zaman sistem tarafından öldürülecek.
  • Eğer bir faaliyeti durdurulmuş veya durdurulursa, sistem ya da bitirmek isteyen, ya da sadece öldürerek bellekten aktivitesini düşürebilir onun süreci. Kullanıcı tekrar görüntülendiğinde, olmalı tamamen yeniden ve önceki durumuna geri.

Ve bu süreç için yaşam döngüsü:

Süreç Yaşam Döngüsü3. Bir arka plan etkinliği (kullanıcı tarafından görülmez ve duraklatıldı bir aktivite), bu yüzden artık kritik. sistem güvenli bir şekilde diğer bellek geri kazanmak için onun süreci öldürebilir ön ya da görünür işler. Eğer işlemi öldürülmesi gerekiyorsa, kullanıcı tekrar faaliyete geçtiğinde (üzerinde görünür hale getirme yine ekran), (Bundle) onCreate yöntemi ile çağrılır daha önceden verilen vardı savedİnstanceState aynı kendisini yeniden bu onSaveİnstanceState(Paket) kullanıcı olarak devlet son bıraktı.

Gelen yukarıdaki tüm alıntılar: Android Developers Reference: Activity

Sistemi olmayan acitve faaliyetleri yok ve bazı hafıza tüketen uygulamaları başlattı anıları geri dönüşüm olabilir doğruladı. Ve gibi uygulayabilirsiniz: etkinlik isFinishing() ve sonra "DDMS bırakılıyor sistem tarafından tespit edilmesi" düğmesini kullanarak öldürmek Ama sistem eski bir ilk yok olacak sanırım. Ancak "Fırlatma Etkinliği" geri dönüşümlü olmuştur. o zaman diğer faaliyetleri tutmak için hiçbir anlamı vardır

GÜNCELLEME

İşte here buldum bazı görüşler:

Devlet durdu

Bir aktivite değil görünür, ama hala bellekte bir yer olduğunu söyleyebiliriz devlet durdu. Hareket durduruldu cepheye geri getirilemiyor Çalışan bir etkinlik daha olur. Yoksa, yok olup ortadan olabilir bellekten.

Bu sistem sayesinde etrafında faaliyetleri durdurulmuş durumda tutar kullanıcı hala bu faaliyetleri dönmek istiyorum edemeyecekler en kısa zamanda, durdurulan bir faaliyet başlatmayı daha ucuzdur sıfırdan bir etkinlik başlıyor. O çoktan geçtik çünkü. nesneleri bellekte yüklü ve tüm getirmek için var sadece ön plan.

Durdurulan faaliyetler herhangi bir noktada bellekten silinebilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BenjiManTV

    BenjiManTV

    20 Mart 2011
  • Dogbert files

    Dogbert file

    12 Ocak 2012
  • StalkerJS

    StalkerJS

    15 HAZİRAN 2010