Android 16 Live Updates: Mintly'nin odak zamanlayıcısını kilit ekranına taşımak
Android 16'nın ilerleme odaklı bildirimlerine pratik bir rehber — ProgressStyle segmentleri, yükseltilmiş devam eden bildirimler ve bunların çalışan bir Pomodoro zamanlayıcısına kattıkları.
Sadece uygulamanın içinde yaşayan çalışan bir zamanlayıcı, kimsenin kontrol etmediği bir zamanlayıcıdır. Bir Pomodoro seansının bütün amacı onu izlemeyi bırakmanızdır — su yüzüne çıktığınızda kilit ekranına bakar, ne kadar odak süresi kaldığını görür ve işinize geri dönersiniz. Android 16, devam eden bildirimlere bu bakış için gerçek bir cevap veriyor: ProgressStyle etrafında kurulmuş, gölgede kaybolmak yerine kilit ekranında bir yer ve durum çubuğunda kompakt bir çip kazanan, yükseltilmiş bir bildirim türü olan Live Updates. İşte gerçekte ne yaptığı ve Mintly’nin bir seans sırasında gösterdiği bildirimi nasıl değiştirdiği.
Bir Live Update, normal bir devam eden bildirime göre ne katıyor
İlerleme çubuğu olan, kapatılamayan devam eden bir bildirim Android’de yıllardır çalışıyor — Mintly’nin bundan önceki zamanlayıcı bildirimini çalıştıran şey de buydu. Elde etmediği şey öncelikli yerleşimdi. Normal bir devam eden bildirim, gölgede her şeyin yanında oturur ve yoğun bir bildirim listesi olan bir telefonda, birçok satırdan biridir.
Bir Live Update, aynı içeriğe bir Notification.Builder çağrısı kadar yakındır, ama sistem onu farklı ele alır: diğer bildirimler daraltılmış olsa bile kilit ekranında görünmeye uygundur ve desteklenen cihazlarda durum çubuğu saatinin yanında küçük, canlı bir çip olarak görüntülenebilir. Bu yükseltilmiş yerleşimi gerçekten verip vermeyeceğine sistem karar verir — talep etmek garanti etmez — ama Android’in bunun için tasarladığı bildirim türleri için (yaklaşan bir yolculuk, yolda olan bir paket, geri sayan bir zamanlayıcı) bu, “kullanıcının kilidi açıp gölgeyi aşağı çekmesi gerekiyor” ile “kullanıcı hiçbir şeye dokunmadan kilit ekranından okuyor” arasındaki farktır.
ProgressStyle’ı bir zamanlayıcı bildirimine bağlamak
Stilin kendisi, zaten oluşturmakta olduğunuz bir bildirimin üzerine küçük bir ekten ibarettir:
val progressStyle = NotificationCompat.ProgressStyle()
.setProgress(elapsedSeconds)
.setProgressMax(totalSeconds)
.setProgressIndeterminate(false)
val notification = NotificationCompat.Builder(context, CHANNEL_FOCUS_SESSION)
.setContentTitle("Focus session")
.setContentText(formatRemaining(totalSeconds - elapsedSeconds))
.setSmallIcon(R.drawable.ic_mintly_timer)
.setOngoing(true)
.setOnlyAlertOnce(true)
.setStyle(progressStyle)
.setRequestPromotedOngoing(true)
.build()
Üzerinde durmaya değer tek ayar setRequestPromotedOngoing(true). Bu bir talep, bir anahtar değil — platform reddedebilir ve kullanıcının şu anda gerçekten aktif olarak beklediği bir şeyi temsil eden bildirimler için tasarlanmıştır, sıraya girmenin genel amaçlı bir yolu değil. Gerçekten çalışan bir zamanlayıcı buna uygundur. On dakika önce biten bir seanstan kalan bayat bir bildirim uygun değildir ve platformun kendi sezgisel yöntemleri, gerçekte devam eden hiçbir şey yokken bunu isteyen bir uygulamadan gelen yükseltme taleplerini görmezden gelmeye başlayacaktır.
Segmentler, bir çubuğu gerçek bir seans haritasına dönüştürür
Mintly için bunu benimsemeye değer kılan kısım, tek başına kilit ekranı yerleşimi değildi — ProgressStyle’ın segment desteğiydi. Tek, sürekli bir çubuk yerine, ilerlemeyi bir dizi renkli aralık olarak tanımlayabilirsiniz; bu da bir Pomodoro seansının gerçekte nasıl yapılandırıldığıyla doğrudan örtüşür: çalışma bloğu, kısa mola, çalışma bloğu, daha uzun mola.
val segments = listOf(
ProgressStyle.Segment(25 * 60).setColor(mintlyFocusColor),
ProgressStyle.Segment(5 * 60).setColor(mintlyBreakColor),
ProgressStyle.Segment(25 * 60).setColor(mintlyFocusColor),
ProgressStyle.Segment(15 * 60).setColor(mintlyLongBreakColor),
)
progressStyle.setProgressSegments(segments)
Bu tek değişiklik, eski düz ilerleme çubuğunun hiçbir zaman cevaplayamadığı bir soruyu yanıtlıyor: sadece “bu seansta ne kadar süre kaldı” değil, “döngüde neredeyim ve bir sonraki gerçek molaya ne kadar var.” Noktalar, ProgressStyle’ın sunduğu diğer temel öğedir — çubuk boyunca küçük işaretler — ve kesinti kontrol noktaları için doğal bir uyum sağlarlar, ancak Mintly bunları henüz kullanmıyor.
Başarısızlık modu: bunu süsleme olarak ele almak
ProgressStyle’ı ve yükseltme talebini bir uygulamanın sahip olduğu her devam eden bildirime eklemek cazip gelebilir, çünkü API yüzeyi küçük ve görsel yükseltme gerçek. Bu yanlış bir içgüdüdür. Live Updates dar bir kategori için vardır — zamana bağlı ve gerçekten devam etmekte olan, kullanıcının şu anda önemsediği bir şey — ve platform, bu kategorinin dışında yükseltme talep eden uygulamaları izliyor. “Bunu 3 gündür açmadın” dürtmesini bir ilerleme çubuğu gibi süsleyip yükselten bir uygulama, tam olarak bu özelliğin önlemek için kapsamlandığı istismar durumudur ve tekrarlanan kötü talepler, bir uygulamanın gelecekteki yükseltme taleplerinin sessizce önceliğinin düşürülmesine yol açabilecek türden şeylerdir.
setRequestPromotedOngoing(true)’ı herhangi bir yere eklemeden önceki dürüst test şudur: bunun arkasında gerçek, çalışan bir süreç var mı ve çubuğun kendisinden kullanıcının tahmin edebileceği belirli bir zamanda mı bitiyor? Bir odak zamanlayıcısı için, her açıdan evet. Tipik bir yerel-öncelikli uygulamadaki çoğu diğer bildirim türü için, hayır — ve zaten sahip olduğunuz sade bildirim, elde tutulması gereken doğru olandır.
Bunun yerine geçmediği şey
Live Updates, zamanlayıcı bildiriminin nerede görüldüğünü değiştirir. İlk etapta güvenilir bir şekilde ateşlenip ateşlenmediğini değiştirmez — bu hâlâ Mintly’nin Doze ve süreç ölümünden kurtulmak için zaten dayandığı ön plan servisi ve duvar-saati bitiş zamanı matematiğidir. ProgressStyle ve yükseltme talebi bu temelin üzerine oturur; bunlar bir sunum katmanıdır, altta yatan zamanlayıcıyı doğru yapmanın yerine geçmez. Önce güvenilir versiyonu inşa edin. Kilit ekranı çipi, bu artık şüphe götürmediğinde eklemeye değer — öncesinde değil.
// İlgili okumalar
Günlükten dahası
Android'de 2026'da ön plan servis türleri: özelliğinize gerçekten uyanı seçmek
Android'in ön plan servis türü kısıtlamalarına pratik bir rehber — dataSync, mediaPlayback, specialUse, shortService — ve öldürülmeden ya da reddedilmeden doğru olanı nasıl seçeceğiniz.
2026'da Android bildirim kanalları: kullanıcıların susturmayacağı önem düzeyleri tasarlamak
Android bildirim kanalları için pratik bir rehber — önem düzeyleri, kanal grupları, ayarların oluşturulduktan sonra neden donduğu ve kullanıcı güvenini kaybetmeden nasıl göç edileceği.
Mintly'i inşa etmek: Android süreci öldürmek isterken bir odak zamanlayıcısını doğru tutmak
Çalışan bir Pomodoro zamanlayıcısının, tek seferlik bir hatırlatıcıdan daha zor bir güvenilirlik sorunu var. İşte Mintly'in ön plan servisi ve duvar saati bitiş zamanıyla Doze, süreç ölümü ve ekran kapalıyken oluşan kaymayı nasıl atlattığı.