2014-09-05 79 views

回答

8

您只需检查屏幕是否打开。

@Override 
protected void onPause() { 
    super.onPause(); 

    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 

    boolean screenOn; 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) { 
     screenOn = pm.isInteractive(); 
    } else { 
     screenOn = pm.isScreenOn(); 
    } 

    if (screenOn) { 
     // Screen is still on, so do your thing here 
    } 
} 
+0

工作没有第一复杂if语句...非常感谢.. – 2014-09-06 10:45:25

+1

if语句是因为'isScreenOn()'从API级别20开始不推荐使用,而是指代使用'isInteractive()'。 [PowerManager.isScreenOn()](http://developer.android.com/reference/android/os/PowerManager.html#isScreenOn()) – Nicklas 2014-09-06 14:09:56

+0

是的,我忘了它..非常感谢 – 2014-09-06 16:49:44

0

你只是想知道什么时候调用onPause?您可以覆盖超功能,并添加日志记录功能:

@Override 
public void onPause() { 
    super.onPause(); 
    System.out.println("On Pause called"); 
} 
+0

我知道.IN的onPause()方法,我需要知道,这是否在onPause由后退按钮或home键或锁屏 – 2014-09-05 20:32:00

1

On Pause Cycle

你可以简单地知道它使用这种方法

@Override 
public void onPause() { 
super.onPause(); // Always call the superclass method first 
System.out.println("On Pause called"); 
} 

如何使设备保持清醒,同时锁屏。 Documentation.

你的情况好了,你就需要Wake_Lock

要使用唤醒锁,第一步是将WAKE_LOCK权限添加到您的应用程序的清单文件:

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

如果您的应用程序包括使用服务做广告的广播接收器,您可以通过WakefulBroadcastReceiver来管理您的唤醒锁定,如Using a WakefulBroadcastReceiver.中所述这是首选方法。如果您的应用程序不遵循这一模式,这里是你如何直接设置唤醒锁:

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

要解除锁定之后,调用wakelock.release().这将释放你的要求给CPU。一旦应用程序完成使用后释放唤醒锁定非常重要,以避免电池电量耗尽。

设置powermanager后,请执行此操作。

boolean screenOn; 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) { 
    screenOn = powerManager.isInteractive(); 
} else { 
    screenOn = powerManager.isScreenOn(); 
} 

if (screenOn) { 
    // Screen is still on, so do your thing here 
} 
+0

叫我知道.IN的onPause()方法,我需要知道,是否这个onpause被后退按钮或主页按钮或锁定屏幕调用 – 2014-09-05 20:30:39

+0

是的,只要你离开你,就会调用'onPause()'方法。 – 2014-09-05 21:46:10

+0

Inpause我正在执行一项操作。现在,我希望此操作在由于屏幕锁定而导致onpause发生时不会发生。在其他情况下,我希望执行该操作。 – 2014-09-05 22:12:03

相关问题