Etkinlikleri arka planda başlatmayla ilgili kısıtlamalar

Android 10 (API düzeyi 29) ve daha yüksek düzeylerde, uygulama arka planda çalışırken uygulamaların etkinlikleri ne zaman başlatabileceğiyle ilgili kısıtlamalar. Bu kısıtlamalar, kullanıcının kesintileri en aza indirmeye ve ekranda gösterilenler üzerinde daha fazla denetime sahip olmasına yardımcı olur.

Bu kılavuzda, etkinliklere arka plandan başlamak için alternatif olarak bildirimler gösterilmektedir. Ayrıca, kısıtlamanın geçerli olmadığı belirli durumlar da listelenir.

Bunun yerine bildirimler göster

Neredeyse her durumda, arka plandaki uygulamalar doğrudan bir etkinlik başlatmak yerine kullanıcıya acil bilgi sağlamak için zamana duyarlı bildirimler görüntülemelidir. Bu bildirimlere, gelen telefon araması veya aktif bir çalar saatin işlenmesi de dahildir.

Bu bildirime dayalı uyarı ve hatırlatma sistemi, kullanıcılara birçok avantaj sağlar:

  • Kullanıcı cihazı kullanırken, yanıt vermesine olanak tanıyan bir uyarı bildirimi görür. Kullanıcı, mevcut bağlamını korur ve ekranda gördüğü içerik üzerinde kontrolü vardır.
  • Zamana duyarlı bildirimler, kullanıcının Rahatsız Etmeyin kurallarına uyar. Örneğin, kullanıcılar Rahatsız Etmeyin modu etkinken yalnızca belirli kişilerden veya tekrar arayanlardan gelen aramalara izin verebilir.
  • Cihazın ekranı kapalıyken tam ekran intent işlemi hemen başlatılır.
  • Kullanıcı, cihazın Ayarlar ekranında, belirli bildirim kanallarından gelenler de dahil olmak üzere, son zamanlarda hangi uygulamaların bildirim gönderdiğini görebilir. Kullanıcı bu ekrandan bildirim tercihlerini kontrol edebilir.

Uygulamalar ne zaman etkinlik başlatabilir?

Android 10 veya sonraki bir sürümde çalışan uygulamalar, aşağıdaki koşullardan biri veya daha fazlası karşılandığında etkinlik başlatabilir:

  • Uygulamanın görünür bir penceresi (ör. ön plandaki bir etkinlik) olmalıdır.
  • Uygulamanın ön plan görevinin arka yığınında bir etkinliği vardır.
  • Uygulamanın Son Kullanılanlar ekranındaki mevcut bir görevin arka yığınında bir etkinliği vardır.

  • Uygulamada çok kısa süre önce başlatılan bir etkinlik var.

  • finish() adlı uygulama, kısa süre önce bir etkinlikte bulundu. Bu durum yalnızca finish() çağrıldığı sırada uygulama ön planda bir etkinlik veya ön plan görevinin arka yığınında bir etkinlik olduğunda geçerli olur.

  • Uygulama, sisteme bağlı aşağıdaki hizmetlerden birine sahip. Bu hizmetlerin bir kullanıcı arayüzü başlatması gerekebilir.

  • Uygulama farklı, görünür bir uygulamaya bağlı bir hizmete sahip. Hizmete bağlı uygulamanın, etkinlikleri başarılı bir şekilde başlatabilmesi için uygulama için arka planda görünür durumda kalması gerekir.

  • Uygulama, sistemden bir bildirim PendingIntent alır. Hizmetler ve yayın alıcıları için bekleyen amaçlar varsa uygulama, beklemedeki amaç gönderildikten sonra birkaç saniyeliğine etkinlikleri başlatabilir.

  • Uygulama farklı ve görünür bir uygulamadan gönderilen PendingIntent alır.

  • Uygulama, bir kullanıcı arayüzü başlatmasının beklendiği bir sistem yayını alır. Örnek olarak şunlar verilebilir: ACTION_NEW_OUTGOING_CALL ve SECRET_CODE_ACTION. Uygulama, yayın gönderildikten sonra birkaç saniye süreyle etkinlikleri başlatabilir.

  • Uygulama, CompanionDeviceManager API'si aracılığıyla bir tamamlayıcı donanım cihazıyla ilişkilendirilir. Bu API, kullanıcının eşlenmiş bir cihazda gerçekleştirdiği işlemlere yanıt olarak uygulamanın etkinlik başlatmasını sağlar.

  • Uygulama, cihaz sahibi modunda çalışan bir cihaz politikası denetleyicidir. Örnek kullanım alanları arasında tümüyle yönetilen kurumsal cihazların yanı sıra dijital tabela ve kiosk gibi özel cihazlar yer alır.

  • Uygulamaya kullanıcı tarafından SYSTEM_ALERT_WINDOW izni veriliyor.