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

Android 10 (API düzeyi 29) ve uygulamaların ne zaman başlatılabileceğine ilişkin daha üst düzey kısıtlamalar etkinlikler görebilirsiniz. Bu kısıtlamalar, kullanıcı ve içerik üreticinin kesintilerini en aza kullanıcının ekranda gösterilenler üzerinde daha fazla kontrol sahibi olmasını sağlar.

Bu rehberde, başlangıç etkinlikleri için alternatif olarak bildirimler görebilirsiniz. Ayrıca, kısıtlamanın geçerlidir.

Bunun yerine bildirimleri göster

Neredeyse her durumda, arka planda çalışan uygulamalar zamana duyarlı bildirimlerle bir etkinliği doğrudan başlatmak yerine kullanıcıya acil bilgiler sağlama. Bu bildirimlere örnek olarak, gelen bir telefon aramasını veya etkin bir alarmı işleme verilebilir. saat.

Bildirime dayalı bu uyarı ve hatırlatma sistemi birçok avantaj sağlar kullanıcılar için:

  • Kullanıcı, cihazı kullanırken bir uyarı bildirimi görür. Bu bildirimle kullanıcı, yanıt verebilir. Kullanıcı, içinde bulunduğu bağlamı korur ve içerik üzerinde kontrol sahibi olur. içerik yer alır.
  • Zamana duyarlı bildirimler kullanıcının Rahatsız Etmeyin kuralları. Örneğin, Örneğin, kullanıcılar yalnızca belirli kişilerden gelen veya tekrar eden aramalara izin verebilir Rahatsız Etmeyin modu etkinken arayanlar.
  • Cihazın ekranı kapalıyken tam ekran intent başlatılır hemen teslim edebilirsiniz.
  • Cihazın Ayarlar ekranında, kullanıcı hangi uygulamaların belirli bildirim kanallarından gelen bildirimler de dahil olmak üzere son gönderilen bildirimler Bu ekrandan kullanıcı, bildirim tercihlerini kontrol edebilir.

Uygulamaların ne zaman etkinlik başlatabileceği

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

  • Uygulamanın, ön plandaki bir etkinlik gibi görünür bir penceresi vardır.
  • Uygulamanın şurada bir etkinliği var: geri yığınını ön plan görevi görebilir.
  • Uygulamanın Son kullanılanlar ekranı.

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

  • finish() adlı uygulama bir etkinliktir. Bu yalnızca uygulamada herhangi bir veya arka yığınındaki bir etkinliği ön planda finish() çağrıldığında ön plan görevi.

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

  • Uygulama, görünür durumdaki farklı bir uygulamaya bağlı bir hizmete sahip. Uygulama arka planda uygulama için görünür kalması gerekir. ve aktiviteleri başarılı bir şekilde başlatabilirsiniz.

  • Uygulama bir bildirim alır Sistemden PendingIntent. İçinde hizmetler ve yayın alıcıları için bekleyen niyetler örneğine bakalım. , bekleyen intent gönderildikten sonra birkaç saniye süreyle etkinlik başlatabilir.

  • Uygulama, farklı, görünür bir yerden gönderilen PendingIntent alıyor uygulamasını indirin.

  • Uygulama, bir sistem yayınını başlatması beklenen uygulama tarafından Kullanıcı arayüzü. Örnek olarak şunlar verilebilir: ACTION_NEW_OUTGOING_CALL ve SECRET_CODE_ACTION. Uygulama, yayın gönderildikten birkaç saniye sonra etkinlikleri başlatabilir.

  • Uygulama, CompanionDeviceManager API'ye gidin. Bu API, uygulamanın kullanıcı eşlenmiş bir cihazda işlem yaptığını gösterir.

  • Bu uygulama şurada çalışan bir cihaz politikası denetleyicidir: cihaz sahibi moduna girmesini isteyin. Kullanım alanlarına şunlar örnek verilebilir: tümüyle yönetilen kurumsal cihazlar dijital cihazlar gibi özel cihazlar da tabelalar ve kiosklar.

  • Kullanıcı, uygulamaya SYSTEM_ALERT_WINDOW izni verdi.

PendingIntent'lerden etkinlik başlatırken etkinleştirilmesi gerekir

Yanlışlıkla Etkinlik'in başlatılmasına izin vermemek için listelenen koşulları ile ilgili daha fazla bilgi edinin. Android 14'ten itibaren, uygulamanızın dokunun.

Android 15 veya sonraki sürümleri hedefleyen uygulamalar artık varsayılan olarak örtülü olmayacak PendingIntents kullanıcıya arka planda etkinlik başlatma (BAL) ayrıcalıkları verme oluştur. Açıkça tercih edilmesi gerekir. Bunu yapmak için seçenekler şunlardır: uygulamanın PendingIntents gönderip oluşturmasına veya oluşturmasına bağlı olarak farklılık gösterir.

Beklemedeki amaçlar tablosu
Şekil 1: Arka plan etkinliği lansmanları için karar akışı.

PendingIntent'in Göndereni Tarafından

Android 14 veya sonraki sürümleri hedefleyen ve bir PendingIntent başlatmak isteyen uygulamalar

  • listelenen koşulları ve
  • bu istisnalara göre arka plan etkinliğinin başlatılmasına izin vermeyi etkinleştirme

Bu etkinleştirme işlemi yalnızca uygulama geliştirici uygulamanın bir Etkinlik başlatır.

Etkinleştirmek için uygulama, şunları içeren bir ActivityOptions paketi iletmelidir: setPendingIntentBackgroundActivityStartMode(ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED) PendingIntent.send() veya benzer yöntemler ile değiştirebilirsiniz.

PendingIntent'in İçerik Üreticisi Tarafından

PendingIntent oluşturan ve Android 15 veya sonraki sürümleri hedefleyen uygulamalar artık arka plan etkinliğinin başlatılmasına izin vermeyi açıkça etkinleştirme PendingIntents, listelenen koşullar altında başlatılabilir.

Çoğu durumda, PendingIntent başlatan uygulama etkinleştirilir. Ancak, uygulamayı oluşturan uygulamanın bu ayrıcalıkları vermesi gerekiyorsa:

  • PendingIntent, oluşturma uygulaması görünür olduğunda başlatılabilir.
  • Uygulama oluşturma uygulamasında özel bir özellik varsa PendingIntent başlatılabilir. ayrıcalıkları.

Etkinleştirmek için uygulama, şunları içeren bir ActivityOptions paketi iletmelidir: Şuraya setPendingIntentCreatorBackgroundActivityStartMode (ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED): PendingIntent.getActivity() veya benzer yöntemler.

Daha fazla bilgi için ilgili referans belgelerini okuyun: