Görev anlık görüntüleri

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/