gpt4 book ai didi

android - 如何使用 PowerManager 和 PARTIAL_WAKE_LOCK

转载 作者:行者123 更新时间:2023-12-05 00:00:13 28 4
gpt4 key购买 nike

我开发了一个小应用程序,这个应用程序必须在设备处于 sleep 或深度 sleep 状态时始终运行(按右键关闭屏幕)我读了很多关于它的帖子,都告诉我方法是使用 PowerManager,我的问题是如果我很好地使用这个命令,我的结构是 > myActivity.class、ReceiverBoot.class 和 ServiceBoot.class,我在 myActivity.class 上使用 POwerManager 类,如下所示:

PowerManager mgr = (PowerManager)this.getSystemService(Context.POWER_SERVICE);
PowerManager wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP , "MyWakeLock");

onCreateMethod 在此之后

wakeLock.acquire();

在这个之后我有一个

super.onCreate(savedInstanceState);
this.mTimer.scheduleAtFixedRate(
new TimerTask(){
@Override
public void run(){doTask();}
} , 0, 1000);

wakeLock.release();

关于我的 Manifest XML 代码

<uses-permission android:name="android.permission.WAKE_LOCK" />

和布局上的 XML 代码有

android:keepScreenOn="true"

但在 10seg 之后,屏幕总是关闭,但应用程序正在运行,只是使用 wifi。

该应用程序在 wifi conn 上工作得很好,但是当更改为 3G conn 时,该应用程序消失了,我用这个命令很好吗?问题是连接到互联网的类型???非常感谢!

最佳答案

我不是 100% 清楚你的问题。无论是数据问题,还是屏幕问题。 (或者,如果屏幕问题是您正在尝试修复数据问题?)。

针对屏幕

您没有使用正确的锁来保持屏幕开启。 PARTIAL_WAKE_LOCK 仅请求您可以使用处理器。要使屏幕保持在您的应用程序上,请根据需要使用 SCREEN_DIM_WAKE_LOCKSCREEN_BRIGHT_WAKE_LOCKFULL_WAKE_LOCK 之一。只要你需要锁,就应该持有这个锁。目前您正在 onCreate() 中发布它。请记住,如果用户按下电源按钮,您的锁就会被释放(PARTIAL 除外)。

如果您的目的只是在 View 处于 Activity 状态时保持屏幕打开,那么最好根本不要使用锁定。唤醒锁需要额外的权限。您可以通过将此添加到您的 onCreate 覆盖来实现:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

这与使用 android:keepScreenOn="true" 的效果相同,您似乎已经在这样做了。但是,我无法从您的代码 fragment 中说出为什么这不起作用。确保您正在为正确的布局充气。

为了您的数据

当屏幕未处于 Activity 状态(并且没有锁定)时,设备可能会关闭 3G 数据。同样,如果需要,请不要释放您的锁(尽管也不要永远保留它,这只会耗尽手机电池)。

关于android - 如何使用 PowerManager 和 PARTIAL_WAKE_LOCK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20657031/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com