Android FULL_WAKE_LOCK已被弃用,但PARTIAL_WAKE_LOCK没有被弃用。

7

这里我提到了唤醒屏幕的代码。我希望这段代码在应用程序关闭并且CPU已清除时仍然能够监听,并且用户可以在我的屏幕解锁时点击电源按钮,该应用程序就像WhatsApp一样同步。

    PowerManager pm =  (PowerManager)getSystemService(Context.POWER_SERVICE); 
    wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "whatever");
    super.onCreate(savedInstanceState);
    wl.acquire();
2个回答

7

FULL_WAKE_LOCK已经被弃用,使用PARTIAL_WAKE_LOCK更好。这是标准做法。

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
Wakelock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
        "MyWakelockTag");
wakeLock.acquire();

要了解更多实现方式,请访问官方链接:

https://developer.android.com/training/scheduling/wakelock.html


实际上,我希望我的应用程序也可以在后台运行,就像WhatsApp、Hike等其他应用一样。是否有其他方法可用? - KOUSIK daniel
你可以很容易地做到这一点。只需实现一个服务,并在用户关闭应用程序时不要销毁它。同时使用WAKE_LOCK,即使在后台运行,也会保持服务的活动状态。 - Prokash Sarkar
当进程被杀死时,它仍然在工作,而且它一直在工作。 - KOUSIK daniel
1
它在Android 8上无法工作。 同时将wakeLock.release();添加到onDestroy()中也没有帮助。 - AlexS

0

你可以考虑使用另一种方式,即在应用程序仍处于休眠状态时使用JobScheduler来运行后台任务,从而保护电池寿命。 JobScheduler提供了许多方法来定义作业执行条件,因此我们可以利用它,但它只能用于使用Android 5.0(API级别21)及以上版本的应用程序。


2
我们在编写代码,而不是文学作品。你能否请发一下代码? - AlexS
尝试使用此方法来安全地实现后台任务,同时不影响设备的电池寿命和性能。 https://android.jlelse.eu/modern-background-execution-in-android-bfae13c61b6b - Ajay Deepak
感谢您的评论。没有任何示例真的很难。我花了两天时间来解释JobScheduler,但它在Oreo+ API上没有生效。 - AlexS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接