首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PowerManager和PARTIAL_WAKE_LOCK

如何使用PowerManager和PARTIAL_WAKE_LOCK
EN

Stack Overflow用户
提问于 2013-12-18 11:33:13
回答 1查看 14.1K关注 0票数 3

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

代码语言:javascript
复制
PowerManager mgr = (PowerManager)this.getSystemService(Context.POWER_SERVICE);
PowerManager wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP , "MyWakeLock");

在此之后的onCreateMethod上

代码语言:javascript
复制
wakeLock.acquire();

在这之后我有一个

代码语言:javascript
复制
super.onCreate(savedInstanceState);
this.mTimer.scheduleAtFixedRate(
                new TimerTask(){
                    @Override
                    public void run(){doTask();}
                } , 0, 1000);

wakeLock.release();

关于我所拥有的最完整的XML代码

代码语言:javascript
复制
<uses-permission android:name="android.permission.WAKE_LOCK" />

而在布局上,XML代码有

代码语言:javascript
复制
android:keepScreenOn="true"

但是在10点之后,creen总是关闭,但是应用程序正在运行,而且还带有wifi。

这个应用程序在wifi conn上运行得很好,但是当切换到3G conn时,应用程序就消失了,我使用了这个命令吗?问题是网络连接的类型?非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2013-12-18 15:09:35

我对你的问题还不十分清楚。无论是数据问题还是屏幕问题。(或者屏幕问题是您尝试修复数据问题所做的?)。

用于屏幕的

您没有使用正确的锁来保持屏幕打开。PARTIAL_WAKE_LOCK只请求您可以使用处理器。要将屏幕保持在应用程序上,可以根据需要使用SCREEN_DIM_WAKE_LOCKSCREEN_BRIGHT_WAKE_LOCKFULL_WAKE_LOCK之一。只要你需要这个锁,这个锁就应该保持多久。目前,您正在onCreate()中发布它。请记住,如果用户按power按钮,那么您的锁就会被释放(这部分是例外)。

如果您的目的只是在视图处于活动状态时保持屏幕开着,那么最好不要使用锁。唤醒锁需要额外的许可。可以通过将此添加到onCreate覆盖中来完成:

代码语言:javascript
复制
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

这与使用android:keepScreenOn="true"的效果是一样的,您似乎已经在这样做了。然而,我无法从你的片段中看出为什么这不起作用。确保你是在充气正确的布局。

表示您的数据

当屏幕不活动时(并且没有锁),设备可能会关闭3G数据。同样,如果你需要的话,不要释放你的锁(尽管也不要永远保持它,那只是吸掉手机电池)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20657031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档