Mengoptimalkan penggunaan memori untuk tampilan jam

Untuk memberikan masa pakai baterai perangkat Wear OS sebaik mungkin, sistem melakukan perhitungan penggunaan memori. Sebagai bagian dari kualitas aplikasi Wear OS panduan, tampilan jam yang menggunakan Format Tampilan Jam memiliki batasan terkait jumlah memori yang dapat mereka gunakan, tergantung pada status jam saat ini:

  • Dalam mode standby, tampilan jam tidak boleh menggunakan lebih dari 10 MB memori.
  • Dalam mode interaktif, tampilan jam tidak boleh menggunakan lebih dari 100 MB memori.

Sistem menghitung penggunaan memori tampilan jam

Untuk menghitung ukuran yang digunakan oleh gambar atau font bitmap dalam tampilan jam yang menggunakan Format Tampilan Jam, sistem akan menyelesaikan langkah-langkah berikut:

  1. Mendekompresi gambar atau font bitmap.
  2. Memeriksa gambar atau font bitmap untuk melihat apakah dapat dioptimalkan di salah satu cara berikut:
    • Diubah ukurannya agar lebih sesuai dengan ukuran layarnya.
    • Dipangkas untuk menghapus piksel yang sepenuhnya transparan.
    • Pengurangan sampel ke RGB565, jika hal ini dapat dilakukan tanpa hilangnya {i>fidelity<i}.

Berdasarkan kotak pembatas yang dihasilkan, sistem akan menghitung ukuran gambar atau font bitmap, dalam byte, sebagai salah satu dari berikut ini:

  • Untuk gambar dan font yang menggunakan RGBA8888: \( 4 \times width \times height \)
  • Untuk gambar dan font yang menggunakan RGB565: \( 2 \times width \times height \)
  • Untuk gambar dan font yang menggunakan konfigurasi bitmap ALPHA_8: \( width \times height \)

Mode interaktif

Saat menghitung penggunaan memori untuk mode interaktif, sistem akan menghitung jumlah jumlah dari yang berikut:

  1. Ukuran font vektor yang belum diproses.
  2. Perkiraan penggunaan font default sistem.
  3. Ukuran total gambar dan font bitmap setelah pemangkasan, pengubahan ukuran, atau pemformatan ulang telah diterapkan.

Konfigurasi

Untuk tampilan jam yang berisi konfigurasi, sistem akan mencoba menghitung ukuran total resource yang digunakan dalam berbagai konfigurasi. Terkadang, ketika ada jumlah kombinasi yang sangat besar, sistem sedikit melebih-lebihkan berapa banyak sumber daya yang digunakan secara bersamaan di konfigurasi yang berbeda.

Mode standby dan lapisan

Untuk mode standby, sistem berasumsi bahwa jam dirender menggunakan hingga tiga lapisan layar penuh, dua di antaranya sepenuhnya statis:

  1. Semua yang ada di bawah elemen smartwatch. Sebagian besar "isi" tampilan jam sesuai dengan digabungkan ke dalam lapisan ini. Tidak masalah berapa banyak gambar yang digunakan untuk menggambar layer ini; sistem menghitungnya sebagai satu gambar layar penuh.
  2. Semua jarum jam, layar digital, atau detail dengan binding platform yang dirender secara dinamis.
  3. Semua elemen yang tercantum setelah jarum jam dan detail di file XML sumber.

Biasanya, sebagian besar penggunaan memori dalam mode standby berasal dari font bitmap, terutama yang besar.

Metode untuk mengurangi penggunaan memori

Dengan mengikuti saran di bagian ini, kemungkinan besar Anda membuat tampilan jam yang konsumsi memorinya tetap dalam batas ini.

Memangkas dan mengubah ukuran font bitmap

Pangkas gambar dan objek BitmapFont, lalu ubah ukurannya agar sesuai dengan ukuran tampilannya.

Saat Wear OS menampilkan tampilan jam, semua gambar akan didekompresi. Gambar layar penuh yang sebagian besar kosong mungkin menggunakan ukuran disk sebesar 3 KB, tetapi jika ditampilkan pada layar 450 x 450 piksel, sistem akan mendekompresi gambar, sehingga ukuran memori gambar akan meningkat hingga 750 KB atau lebih.

Menggunakan tinggi font bitmap yang konsisten

Saat menggunakan BitmapFont, semua gambar untuk masing-masing karakter harus memiliki tinggi yang sama. Demikian juga, semua gambar untuk setiap kata harus memiliki tinggi yang sama.

Menggunakan ukuran frame yang konsisten dalam animasi

Daripada memindahkan gambar di seluruh tampilan jam, perbarui elemen dalam gambar dan letakkan kotak pembatasnya di lokasi yang sama relatif terhadap tampilan jam. Misalnya, jika Anda ingin menganimasikan lingkaran di tampilan jam, pertimbangkan mengubah warna lingkaran, bukan memutar lingkaran di jam tangan wajahnya.

Teknik ini mengurangi ukuran kotak pembatas yang dihitung oleh sistem untuk animasi.

Menghapus duplikat gambar

Jika tampilan jam Anda menampilkan beberapa salinan gambar yang sama, sertakan satu gambar saja menyalin image tersebut di direktori resource, dan merujuk ke beberapa kali.

Menampilkan progres menggunakan busur

Untuk mengemulasi status progres yang selesai setelah 1 menit atau setelah 1 jam, jangan gunakan 60 gambar terpisah. Sebagai gantinya, buat objek Arc yang berisi ekspresi yang mengontrol durasinya, sebagaimana ditunjukkan dalam cuplikan kode berikut:

<PartDraw angle="0" width="400" height="400" name="ProgressBar"
          pivotX="0.5" pivotY="0.5 x="40" y="40">
    <Arc centerX="200" centerY="200" width="400" height="400"
         startAngle="0" endAngle="360">
        <!-- Completes a "progress loop" every minute. -->
        <Transform target="endAngle"
                   value="0 + (clamp([SECOND], 0, 60) - 0) * 6" />
        <Stroke cap="ROUND" color="#123456" thickness="10" />
    </Arc>
</PartDraw>

Untuk menampilkan garis tidak berkelanjutan, misalnya untuk mendapatkan tampilan gaya jam tangan digital retro, gunakan properti tanda hubung untuk objek Stroke atau gambar overlay mask semi-transparan.

Meletakkan smartwatch dan detail di akhir file sumber

Node XML digambar sesuai urutan yang tercantum dalam file XML sumber. Menurut meletakkan jarum jam dan detail di akhir file, sistem menghilangkan seluruh lapisan dari penghitungan memori mode standby.

Mengevaluasi penggunaan memori tampilan jam

Untuk mengukur penggunaan memori tampilan jam, gunakan jejak memori alat evaluator baru yang tersedia di repositori watchface di GitHub.