Görev anlık görüntüleri, Android 8.0'de kullanıma sunulan ve Sonlar Küçük Resimleri'nin yanı sıra Pencere Yöneticisi'ndeki Kayıtlı Yüzeyler'in ekran görüntülerini birleştiren bir altyapıdır. Son görevler küçük resimleri, son görevler görünümündeki bir görevin son durumunu gösterir.
Bir etkinlik durduğunda, Pencere Yöneticisi, görevde en üstte olduğu sürece etkinliğin yüzeylerini yok etmiyordu. Bu etkinliğin tekrar gösterilmesi gerekiyorsa Pencere Yöneticisi, bu Kayıtlı Yüzey'i kullanabildiği için etkinliğin ilk karesini çizmeyi bitirmesini beklemeden animasyonu başlatabilir.
Mimari
Son Görevler küçük resimleri ve Kayıtlı Alanlar kavramları, Görev anlık görüntüleri ile birleştirildi. Bir görev arka plana gittiğinde Pencere Yöneticisi, bu görevin ekran görüntüsünü bir GraphicBuffer'a yerleştirir. Görevin üst etkinliğinin uygulaması bellekte kaldığı sürece bu GraphicBuffer bellekte tutulur. Artık aynı etkinlik tekrar öne getirildiğinde WindowManager bir başlangıç penceresi (TaskSnapshotSurface) oluşturur ve GraphicBuffer'ı, başlangıç penceresinin arabellek kuyruğuna herhangi bir bellek kopyalamadan ekler. Etkinlik ilk karesini çizer çizmez Görev Özeti başlangıç penceresi, normal başlangıç ekranları gibi kademeli olarak kaybolur.
Aynı GraphicBuffer, Son Görünüm görünümünde bir görevin önizleme durumunu çizmek için Binder üzerinden SystemUI'ye de gönderilir. Bu yalnızca bir arabelleğe referans olduğundan, bağlayıcı üzerinden göndermek çok az kaynak harcar. GraphicBuffer, SystemUI'ye ulaştığında bir donanım Bitmap'ine sarılır ve ardından grafik belleğine herhangi bir bellek yüklenmeden ekrana çizilir.
Avantajlar
Bu yeni mimarinin üç ana avantajı vardır:
- Görev anlık görüntüsü başlangıç penceresi olarak kullanılırsa anlık görüntü ile gerçek içerik arasında güzel bir geçiş olur.
- Görev anlık görüntüsü SystemUI'de çizilirken kopyalama işlemi yapılmaz. Daha önce bitmap'in Ashmem'e, ardından grafik belleğine kopyalanması gerekiyordu. Bu yöntem anlık görüntüyü doğrudan grafik belleğinde depoladığından kopyalama gerekmez.
- Son uygulamalarda gördüğünüz durum, uygulamayı yeniden açtığınızda ilk gördüğünüz durumla her zaman aynıdır. Burada aynı arabelleğin kullanılması da çok fazla bellek tasarrufu sağlar. Bu nedenle, Sonlar artık bu resimleri tam çözünürlükte gösterebiliyor. Daha önce, bellek tasarrufu sağlamak için% 64 oranında azaltılmış örnekleme uygulanıyordu.
Uygulama
Bu özellik tamamen Android platformunda mevcuttur. Entegrasyon gerekmez ve özelleştirme desteklenmez. Ancak cihaz üreticileri, Görev Özet Görüntüleri özelliğini tamamen devre dışı bırakabilir.
Bu özelliği devre dışı bırakmak için bu işlevi değiştirin:
frameworks/base/services/core/java/com/android/server/wm/TaskSnapshotController.java#215
Bu özellik devre dışı bırakılırsa Son aramalar görünümünde hiçbir küçük resim gösterilmez.
Yüksek ve düşük çözünürlüklü anlık görüntüler
Görev anlık görüntüleri diske iki ölçekte yazılır. Diskten bir görev anlık görüntüsü geri yüklenirken önce düşük çözünürlüklü anlık görüntüler okunur ve ardından yüksek çözünürlüklü karşılıklarıyla değiştirilir. Bu optimizasyon, resim yükleme sürelerini iyileştirir. Aksi takdirde, anlık görüntü dosyası diskten okunurken küçük bir gecikme yaşanabilir ve resim hazır olana kadar kullanıcı boş bir görev kartı görür.config_highResTaskSnapshotScale
ve config_lowResTaskSnapshotScale
ayarlarını yaparak cihaz yer paylaşımı yapılandırma dosyasında overlay/frameworks/base/core/res/res/values/config.xml
ölçeklerini yapılandırabilirsiniz. Bunlar varsayılan olarak sırasıyla 1,0 ve 0,5 olarak ayarlanır. config_lowResTaskSnapshotScale
değerini 0,0 olarak ayarlayarak düşük çözünürlüklü anlık görüntüleri devre dışı bırakın.
Örnekler ve kaynak
Bu özelliğin kodunun geri kalanını şu TaskSnapshot* dosyalarında bulabilirsiniz:
frameworks/base/+/main/services/core/java/com/android/server/wm/