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

Görev Anlık Görüntüleri, Android 8.0'da kullanıma sunulan ve bir arada bulunan Son Kullanılan Küçük Resimler ve Kayıtlı Yüzeyler için ekran görüntüleri pencere yöneticisini açar. Son Kullanılanlar Küçük resimleri bir görevin son durumunu temsil eder: Son Çağrılar görünümünden.

Bir etkinlik durdurulmuş duruma geldiğinde Pencere Yöneticisi, o aktivite görevin üst kısmında olduğu sürece etkinliğin yüzeyleri tarafından erişilebilir. Eğer bu etkinliğin tekrar gösterilmesi gerekti. Pencere Yöneticisi, animasyonda, etkinliğin ilk karesini çizmeyi tamamlamasını beklemek zorunda kalmazsınız. bu kayıtlı platformu kullanabildi.

Mimari

Son Kullanılanlar Küçük Resimleri ve Kaydedilen Yüzeyler kavramları, Görev ile birleştirilir. Anlık görüntüler. Bir görev arka plana gittiğinde Pencere Yöneticisi bir ekran görüntüsü yerleştirir bir ChartBuffer'a dönüştürüyoruz. Üstteki uygulamanın süresi görevin etkinliği bellekte kalır, bu GraphicBuffer hafızada bulabilirsiniz. Artık aynı etkinlik tekrar öne getirildiğinde, Windows Yönetici bir başlangıç penceresi (TaskSnapshotSurface) oluşturur ve Başlangıçtaki arabellek sırasına herhangi bir bellek kopyalamadan GraphicBuffer penceresini kapatın. Etkinlik ilk karesini çizer çizmez Görev Anlık Görüntüsü başlangıç penceresi, normal başlangıç ekranları gibi yumuşak bir şekilde kararır.

Aynı GraphicBuffer, çizim yapmak için kullanılmak üzere Binder üzerinden SystemUI'ye gönderilir Son kullanılanlar görünümünde bir görevin önizleme durumunu görebilirsiniz. Bu yalnızca bir referans olduğundan bağlayıcıdan gönderildiğinde çok az kaynak harcanır. GraphicBuffer, SystemUI'ye gelir, bir donanım Bit eşlemi içine sarılır ve daha sonra veya grafik belleğine herhangi bir bellek yüklenmeden ekrana çizilir.

Avantajlar

Bu yeni mimarinin üç temel avantajı vardır:

  • Görev anlık görüntüsü başlangıç penceresi olarak kullanılıyorsa iyi bir çapraz geçiş anlık görüntü ile gerçek içerik arasında fark yaratır.
  • Görev anlık görüntüsü SystemUI'da çizildiğinde, bunu herhangi bir kopyalanıyor. Önceden bit eşlemin Ashmem'e, ardından da hafızada bulabilirsiniz. Bu yöntem anlık görüntüyü doğrudan grafik belleğinde depoladığı için gereklidir.
  • Son Arananlar’da gördüğünüz durum her zaman, uygulamayı tekrar açın. Burada aynı arabelleğin bulunması bellek de önemli ölçüde tasarruf sağlar. Bu nedenle Son Kullanılanlar artık bu resimleri tam çözünürlükte gösterebiliyor. Önceden, bellek tasarrufu için% 64 oranında örneklenmekteydi.

Uygulama

Bu özellik tamamen Android platformunda mevcuttur. Entegrasyon yok gerekir ve özelleştirme desteklenmez. Ancak cihaz üreticileri Görev Anlık Görüntüleri özelliğini tamamen devre dışı bırakma.

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

Özellik devre dışı bırakılırsa Son Kullanılanlar görünümünde herhangi bir veya küçük resimler de vardır.

Yüksek çözünürlüklü 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. Bir görevi geri yüklerken önce düşük çözünürlüklü anlık görüntüler okunur ve ardından bu anlık görüntüler geri bildirim vermesidir. Bu optimizasyon, resim yükleme sürelerini iyileştirir. Aksi takdirde, anlık görüntü dosyası ve kullanıcı, resim kullanılabilir olana kadar boş bir görev kartı görür. Ölçekleri, cihaz yer paylaşımı yapılandırma dosyasında yapılandırabilirsiniz. Ayarlayarak overlay/frameworks/base/core/res/res/values/config.xml config_highResTaskSnapshotScale ve config_lowResTaskSnapshotScale. Varsayılan olarak bunlar 1, 0 değerine ayarlanır ve 0,5 olur. Düşük çözünürlüklü anlık görüntüleri şu ayarı yaparak devre dışı bırakın: config_lowResTaskSnapshotScale olan değer 0,0 olarak değiştirildi.

Örnekler ve kaynak

Bu özelliğe ait kodun geri kalanını TaskSnapshot* dosyalarında bulun:

frameworks/base/+/main/services/core/java/com/android/server/wm/