Tümü,Android NDK: Etkinliği yeniden başlattıktan sonra yerel kod nasıl temizlenir?
Varsayılan olarak, ekran yönlendirmesi değiştiğinde veya klavye kaydırıldığında veya çıkarıldığında bir etkinliğin öldürüleceğini ve yeniden başlatılacağını biliyorum. (Bkz. Activity restart on rotation Android). Sorum şu: Yerel kod perspektifinden bunu işlemenin doğru yolu nedir? Örneğin. Yerel bir kütüphaneyi yükleyen statik bir bloğum varsa ve uygulamam yeniden başlatılıyorsa, yerel arazideki herhangi bir belleğin uygun şekilde ele alınmasını nasıl sağlayabilirim? Eğer cihazı döndürdüğünüzde sorun
, bu ayrı bir Konu havuz oluşturulur ve eskileri kaldırıldı asla gibi görünüyor. Bu, her zaman birileri cihazı döner anlamına gelir, biz bir ton daha konu boşta oturan ve
Bunu nasıl olmamasını sağlamak do belleğini tüketebilir var? Dibinde JNIExample page bazı notlarından bkz:
[*] örnek ben mümkün değildi ki, kalan birkaç çözülmemiş sorunları vardır, tamamen işlevsel olmasına olsa Çözülmemiş sorunlar ve hatalar Şimdiye kadar anlamaya. etkinliğini başlattığınızda sorunlar görüntülenir, ardından gizlemek için Geri düğmesine basın ve sonra yeniden başlatın. Deneyimlerimden, yeniden başlatılan etkinlikte işlevlerine yapılan çağrılar, olağanüstü şekilde başarısız olacaktır. callVoid() basitçe, bir segmentasyon arıza ile çöküyor getNewData yapılan çağrılar() ve getDataString() neden JVM artık küresel önbelleğe nesne atfen mutlu çünkü bir hata ile iptal etmek iken. Etkinlik ( JVM kendisi yeniden anlamına gelmez aktivite yeniden başlatma) orijinal JVM içinde çalıştığını aktivite yeniden başlatma şekilde onlar NewGlobalRef() ile korunur halde bizim önbelleğe nesne başvurularını geçersiz görünür ve . Bunun neden olduğunu iyi bir açıklama yok, bu yüzden herhangi bir fikriniz varsa, lütfen bana bildirin.
Bu sorun çözüldü mü?