PowerManager WakeLock无法使其正常工作

时间:2018-09-28 16:09:43

标签: android power-management

即使我使用的平板电脑进入低功耗(屏幕关闭,键盘关闭)模式,我仍在尝试在我的App中使用“活动”来更新计数器。 我首先尝试通过发出此行( android:keepScreenOn =“ true”> )在相应的活动Layout .xml中保持屏幕打开。在选择我的应用程序时,此方法工作正常,但如果有人切换到应用程序外部,则他们将受到屏幕超时设置(最多10分钟)的支配。然后我假设CPU停止运行,因为我注意到回到我的应用程序时,OnCreate方法再次触发。然后它将恢复我的计时器。
我想知道是否有人可以向我解释实现PowerManager的方式可能做错了什么。我的android版本是targetSdkVersion26。这是一个代码段。并且在清单中

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true">

// Initiate Wake-Lock
private PowerManager.WakeLock mWakeLock = null;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    // Initiate Wake-Lock, PARTIAL_WAKE_LOCK: CPU on, Screen Off, Keyboard off
    final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
    mWakeLock.acquire(3600000);

    super.onCreate(savedInstanceState);

    // More code here of course
    //
    //
 }

然后,当Activity销毁时,我释放唤醒锁。

@Override
protected void onDestroy()
{

    if (mWakeLock.isHeld())
        mWakeLock.release();
    // call the superclass method first
    super.onDestroy();
}

最后,我只希望计时器随着屏幕和键盘的关闭而不断增加。任何想法表示赞赏...

0 个答案:

没有答案