我开发了一个小应用程序,当设备处于睡眠状态或深度睡眠状态时,这个应用程序必须始终运行(按右键关闭屏幕)我阅读了很多关于它的帖子,并告诉我方法是使用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后,creen es总是关闭,但是应用程序正在运行,但是有wifi无效。
应用程序与wifi conn工作得非常好,但是当改为3G conn时,应用程序已经不见了,我用这个命令很好吗?问题是互联网的那种连接???非常感谢!
答案 0 :(得分:1)
我不是100%明确你的问题。无论是数据问题,还是屏幕问题。 (或者,如果您正在尝试修复数据问题,那么屏幕问题是什么?)。
对于屏幕
您没有使用正确的锁来打开屏幕。 PARTIAL_WAKE_LOCK
仅请求您可以使用处理器。要保持应用中的屏幕,请使用SCREEN_DIM_WAKE_LOCK
,SCREEN_BRIGHT_WAKE_LOCK
或FULL_WAKE_LOCK
中的一个,具体取决于您的需求。只要您需要锁定,就应该保持此锁定。目前您正在onCreate()中发布它。请记住,如果用户按下电源按钮,但锁被释放(PARTIAL是例外)。
如果您的目的只是在视图处于活动状态时保持屏幕开启,那么最好不要使用锁定。唤醒锁需要额外的许可。您可以将此添加到onCreate
覆盖:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
这与使用android:keepScreenOn="true"
的效果相同,您似乎已经这样做了。但是,我无法说明为什么这不适用于你的片段。确保你正在膨胀正确的布局。
对于您的数据
当屏幕未激活(并且不存在锁定)时,设备可能会关闭3G数据。同样,如果你需要它,请不要释放你的锁(虽然不要永远保留它,这只会吸收手机电池)。