Cihazı uyanık tutmak için doğru API'yi seçme

Kullanıcı Android destekli cihazını boşta bıraktığında pilin bitmesini önlemek için cihaz hızlıca askıya alma durumuna geçer. Ancak bazı durumlarda bir uygulamanın CPU'nun askıya alma durumuna geçmesini engellemesi gerekir. Bazı durumlarda, uygulama çalışırken ekranın açık kalması gerekebilir. Diğer durumlarda, uygulamanın ekranı açık tutması gerekmez ancak CPU'nun etkin olması gerekir.

Benimsediğiniz yaklaşım, uygulamanızın ihtiyaçlarına bağlıdır. Ancak genel bir kural olarak, uygulamanızın sistem kaynakları üzerindeki etkisini en aza indirmek için mümkün olan en hafif yaklaşımı kullanmanız gerekir. Bu belge, durumunuza uygun Android teknolojisini seçmenize yardımcı olur.

Doğru teknolojiyi seçme

Cihazınızın uyanık kalmasını sağlamak için en iyi seçenek, uygulamanızın ihtiyaçlarına bağlıdır. Bu bölüm, doğru yaklaşımı seçmenize yardımcı olur.

Cihazın uyanık kalması için doğru yaklaşımı seçme yöntemini özetleyen akış şeması. Akış şemasının içeriği aşağıdaki metinde ayrıntılı olarak açıklanmıştır.

  • Uygulamanızın ekranı açık tutması gerekiyor mu?
    • Evet ise Ekranı açık tutma başlıklı makaleyi inceleyin. İhtiyaçlarınızı karşılayacak özel amaçlı bir API olabilir. Örneğin, telefon görüşmesi kullanıcı arayüzü uyguluyorsanız gerektiğinde ekranı açık tutan Android Telecom Framework'ü kullanabilirsiniz. Durumunuza uygun özel amaçlı bir API yoksa keepScreenOn API'sini kullanabilirsiniz.
  • Uygulamanız ön plan hizmeti çalıştırıyor ve hizmet çalışırken ekran kapalıyken cihazın uyanık kalmasını mı istiyorsunuz?
    • Hayır ise cihazı uyanık tutmanız gerekmez. Kullanıcı uygulamayla aktif olarak etkileşimde bulunuyorsa cihaz uyanık kalır. Kullanıcı uygulamanızla etkileşimde bulunmuyorsa ve ön plan hizmeti çalıştırmıyorsanız gerektiğinde cihazın askıya alma moduna girmesine izin vermelisiniz. Kullanıcı uygulamadan uzaktayken bazı işlemlerin yapılmasını sağlamanız gerekiyorsa en iyi seçeneği bulmak için arka plan görevleri dokümanlarına bakın.
    • Evet ise öncelikle gerçekten ön plan hizmeti kullanmanız gerektiğini doğrulayın. Durumunuza bağlı olarak, ihtiyacınızı karşılamak için ön plan hizmeti yerine kullanabileceğiniz bazı özel amaçlı API'ler olabilir. Bu hizmetler hakkında bilgiyi Ön Plan Hizmeti dokümanlarında bulabilirsiniz. Örneğin, kullanıcının konumunu izlemeniz gerekiyorsa location ön plan hizmeti yerine coğrafi sınırlama API'sini kullanabilirsiniz.
  • Ön plan hizmeti çalışırken ve cihaz ekranı kapalıyken cihazın askıya alınması kullanıcı deneyimine zarar verir mi? (Örneğin, bildirimleri güncellemek için ön plan hizmeti kullanıyorsanız cihaz askıya alındığında kötü bir kullanıcı deneyimi yaşanmaz.)
    • Hayır ise uyanık kalma kilidi kullanmayın. Kullanıcı cihazıyla etkileşime girdiğinde işlem otomatik olarak devam eder ve cihaz askıya alınma durumundan çıkarılır.
    • Evet ise uyandırma kilidi kullanmanız gerekebilir. Ancak Cihazı uyanık tutan işlemler bölümünde açıklandığı gibi, sizin adınıza uyandırma kilidi bildiren bir API kullanıp kullanmadığınızı veya işlem yapıp yapmadığınızı yine de kontrol etmeniz gerekir.

Cihazı uyanık tutan işlemler

Uygulamanız aşağıdakilerden herhangi birini yapıyorsa kendiniz uyandırma kilidi ayarlamanız gerekmez. Aşağıdaki işlemler ve API'ler, cihazın uyanık kalmasını sağlar.

  • Ses çalıyorsanız ses sistemi sizin için bir uyandırma kilidi ayarlar ve yönetir. Bunu kendiniz yapmanız gerekmez.
  • WorkManager, JobScheduler veya DownloadManager gibi görev planlama API'leri ya da kitaplıkları kullanıyorsanız sistem veya kitaplık, uygulamanızla ilişkilendirilen bir uyanık kalma kilidi edinir.
  • Media3 ExoPlayer kullanıyorsanız oynatıcının sizin için uyandırma kilidi ayarlaması amacıyla ExoPlayer.setWakeMode() kullanabilirsiniz.
  • Belirli cihaz sensörleri uyandırma sensörleridir. Bu sensörlerin raporlayacak verileri olduğunda cihazı uyandırması için SensorManager simgesini kullanabilirsiniz. Bir sensörün uyandırma sensörü olup olmadığını kontrol etmek için Sensor.isWakeUpSensor işlevini çağırın.
  • Alarm planlarsanız uygulamanız çalışmıyor olsa bile alarm çaldığında cihaz uyanır.

Ayrıca bkz.