Android TV යෙදුම් වල D‑Pad මධ්ය බොත්තම දිගු වරක් ඔබා තබන විට, ප්රියතම චැනල් පේජ් එකේ "favorite" තේරීමේ ක්රියාව විශ්වාසනීයව ක්රියා නොකළ බග් එකක් පවතින බව දැනුම් දී ඇත.
මෙම ගැටළුව සරලයි: බොත්තම දිගු-ඔත්තු කිරීමේදී කිසිඳු ප්රතිචාරයක් නොදෙන හෝ කලාපයක් පමණක් ක්රියා කර ඉවත් වීම. උපාංග කිහිපයකදී එය එකවර ක්රියා කර නතර වුණත්, වෙනත් උපාංගවලදී දිගු-ඔත්තු සිදුවුවත් ක්රියා නොකළේය.
ඇත්තටම, Jetpack Compose හි යතුරු ආදානය සකස් කර ගැනීමට Modifier.onKeyEvent සහ Modifier.onPreviewKeyEvent යන දෙකම තිබේ. ඒවා සමාන ලෙස පෙනෙන්නත්, සිදුවන පාරාග්රහණය (event propagation) අඩංගු ස්ථානය වෙනස් වේ. onPreviewKeyEvent යනු “capture” අවධිය – ඉහළින් පහලට යන පාරාග්රහණයේ පළමු තැන; onKeyEvent යනු “bubble” අවධිය – ළඟා වූ කොම්පොනන්ට් එකෙන් ඉහළට යන අවස්ථාව.
Android TV හි දිගු-ඔත්තු හඳුනා ගැනීම පද්ධති මට්ටමේදී සිදු වේ. බොත්තම ඔබා තබා ඇති විට KeyEvent.ACTION_DOWN එකක් එළියට පැනේ, පසුකාලීනව නැවත නැවත එන “repeat” ACTION_DOWN සිදුවීම් මගින් දිගු-ඔත්තු තීරණය කරයි. Compose හි focus system එක onKeyEvent (bubble) අවධියේ ACTION_DOWN අනුග්රහය ගනිමින් click ක්රියාවලිය අඩු කිරීමට උත්සාහ කරයි. එම නිසා click handler එක සහ long‑press handler එක එකම කොම්පොනන්ට් එකේ එකවර පවතින විට, click handler එක පළමු වරට event එක ග්රහණය කර, long‑press කේතයට අවස්ථාව නොලැබේ.
මෙම ගැටළුව විසඳීමට, Modifier.onKeyEvent වෙනුවට Modifier.onPreviewKeyEvent භාවිතා කළා. මෙයින් event එක capture අවධියෙදි ග්රහණය වීම නිසා long‑press සාර්ථකව ක්රියාත්මක වේ, සහ true ආපසු ලබා දීමෙන් event එක ඉදිරියට නොයයි, එවිට click ක්රියාව නැවත ක්රියා නොකරයි.
කෙටි මාර්ගයක් ලෙස:
- children‑වලට පළමුව event එක දීමට අවශ්ය නම් onKeyEvent භාවිතා කරන්න.
- event එක children‑වලට පෙර ග්රහණය කර ගැනීමට onPreviewKeyEvent යොදා ගන්න.
- global shortcuts, parent‑level shortcuts වැනි අවස්ථා සඳහා onPreviewKeyEvent වඩා සුදුසු.
ශ්රී ලංකාවට ඇති වැදගත්කම
මෙම තාක්ෂණික අවබෝධය ශ්රී ලංකාවේ Android TV යෙදුම් සංවර්ධනය කරන සංවර්ධකයන්ට, විශේෂයෙන් TV‑based streaming සේවා, ගේම්ස්, සහ interactive UI නිර්මාණකරුවන්ට ප්රයෝජනවත් වේ. දේශීය විශ්වවිද්යාල සහ තාක්ෂණ පාඨමාලා වලදී Compose event handling මූලික කරුණු ඉගැන්වීමට මෙම උදාහරණය භාවිතා කළ හැකිය. එමෙන්ම, දේශීය ආයතනවල TV‑අපලෝකනයේ UI/UX ගුණාත්මකභාවය වැඩිදියුණු කර, පරිශීලක‑අත්දැකීම් (UX) උසස් කිරීමේදී ගැටළුවක් නොමැතිව නිර්මාණය කළ හැකිය.
කොන්ට්රාක්ට්, අන්තර්ජාල සේවා, සහ ඩිජිටල් මාධ්ය ආයතනවලට මෙය UI‑ලේයර් ඉදිරිපත් කිරීමේ වැදගත්කම තේරුම් ගත හැකි වන අතර, අඩු පරීක්ෂණ කාලයක් තුළ නිෂ්පාදන ගුණාත්මකභාවය වැඩිදියුණු කර ගැනීමට උපකාරී වේ.
අවසන් වශයෙන්, Compose හි event propagation තේරුම් ගැනීම Android TV යෙදුම් වල reliability වැඩි කිරීමට මූලික පියවරක් වන අතර, onPreviewKeyEvent භාවිතය එය සාර්ථක කර ගැනීමට අවශ්ය උපකරණයකි.