Boşta kalan bir Android cihaz, pilin boşalmasını önlemek için hızlıca düşüyor uykuda. Ancak bazen bir uygulamanın ekranı uyandırması gerekebilir veya CPU'yu açık tutun ve bazı işleri tamamlamak için açık tutun.
Uygulayacağınız yaklaşım, uygulamanızın ihtiyaçlarına bağlıdır. Ancak genel bir kural, işletmeniz için mümkün olan en hafif yaklaşımı benimsemeniz, uygulamasını kullanın. Aşağıdaki bölümler cihazın varsayılan uyku davranışının nasıl ele alınacağını açıkla uygulamanızın şartlarıyla uyumlu değildir.
Uyanık kalma kilitlerini kullanmaya alternatifler
Uygulamanıza uyanık kalma kilidi desteği eklemeden önce, uygulamanızın destek kaydı aşağıdaki alternatif çözümlerden birini destekler:
Uygulamanız uzun süreli HTTP indirmeleri yapıyorsa şunu kullanmayı düşünün:
DownloadManager
.Uygulamanız harici bir sunucudaki verileri senkronize ediyorsa, bir senkronizasyon adaptörü başlıklı makaleyi inceleyin.
Uygulamanız arka plan hizmetlerini kullanıyorsa JobScheduler veya Firebase Cloud Messaging bu hizmetleri belirli aralıklarla tetiklemek için.
Tamamlayıcı cihaz yanınızdayken tamamlayıcı uygulamanızı çalıştırmaya devam etmeniz gerekiyorsa Companion Cihaz Yöneticisi'ni kullanın.
Ekranı açık tutma
Oyunlar veya film uygulamaları gibi bazı uygulamaların ekranı açık tutması gerekir. İlgili içeriği oluşturmak için kullanılan
bunun en iyi yolu
FLAG_KEEP_SCREEN_ON
etkinliğinde (ve yalnızca bir etkinlikte, hiçbir zaman bir hizmette veya başka bir uygulamada)
bileşeni). Örnek:
Kotlin
class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } }
Java
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } }
Bu yaklaşımın avantajı, uyanık kalma kilitlerinin aksine ( CPU Açık), özel bir izin gerektirmez ve Böylece, uygulamanızın başka bir uygulamaya ihtiyaç duymadan uygulamalar arasında geçiş yapmasını endişeleri gidereceksiniz.
Bunu uygulamanın başka bir yolu da
android:keepScreenOn
özelliği:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:keepScreenOn="true"> ... </RelativeLayout>
android:keepScreenOn="true"
kullanımı,
FLAG_KEEP_SCREEN_ON
Uygulamanız için en uygun yaklaşımı kullanabilirsiniz. Bir ayarlamanın avantajı
işleminizdeki işaret, size şu seçeneği sunmasıdır:
bayrağı programlı bir şekilde temizler ve böylece,
ekranın açık bir şekilde
kapalı.
TV İçin Ambiyans Modu
TV'de
FLAG_KEEP_SCREEN_ON
veya e-posta ile gelmesini önlemek için
Ambiyans Modu
aktif video oynatma sırasında. FLAG_KEEP_SCREEN_ON
ayarlanmadığında
ön plan etkinliğine göre cihaz otomatik olarak Ambiyans Modu'na girer
bir süre işlem yapılmadığında.
CPU'yu açık tut
İşlem tamamlamadan önce bazı işlemleri tamamlamak için CPU'yu çalışır durumda tutmanız gerekiyorsa
uyku moduna geçerse bir
PowerManager
sistem hizmeti özelliği
kullanıma sunduk. Uyanık kalma kilitleri, uygulamanızın güç durumunu kontrol etmesini sağlar
ait verilerdir.
Uyanık kalma kilitleri oluşturup bu ayarları tutmanın ana cihazın çalışma zamanı üzerinde
pil ömrü. Bu nedenle, uyanık kalma kilitlerini sadece kesinlikle gerekli olduğunda ve
mümkün olduğunca kısa bir süre
tutun. Örneğin hiçbir zaman
bir aktivitede uyanık kalma kilidi kullanabilir. Yukarıda açıklandığı gibi,
kullanıyorsanız
FLAG_KEEP_SCREEN_ON
.
Uyanık kalma kilidi kullanmanın geçerli bir nedeni, ekran açıkken CPU'nun çalışmaya devam etmesi için bir uyanık kalma kilidi tutması kapalı. Ancak bu uygulama da geleneksel Şelale proje yönetimi üzerine etkisi pil ömrü.
Uyanık kalma kilidi kullanmak için ilk adım
Şu işlemler için WAKE_LOCK
izni:
uygulamanızın manifest dosyasına ekleyin:
<uses-permission android:name="android.permission.WAKE_LOCK" />
Uygulamanız bazı işler için hizmet kullanan bir yayın alıcı içeriyorsa uyanık kalma kilidini şu şekilde doğrudan ayarlayabilirsiniz:
Kotlin
val wakeLock: PowerManager.WakeLock = (getSystemService(Context.POWER_SERVICE) as PowerManager).run { newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::MyWakelockTag").apply { acquire() } }
Java
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::MyWakelockTag"); wakeLock.acquire();
Uyanık kalma kilidini açmak için şunu arayın:
wakelock.release()
.
Bu, iddianızı CPU'ya bıraktırır. Uyanık kalma kilidinin açılması önemlidir;
uygulamanız biter bitmez.