2014-09-05 80 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

相關問題