是否有办法检查 Android 中从 sleep 状态唤醒的设备是否调用了 onResume ?
我需要检查的原因是我不希望它从 sleep 状态恢复时调用特定方法:
@Override
public void onResume() {
super.onResume();
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())
&& !SomeCrazyMethodOrPropertyCheckingIfDeviceWakedUpFromSleep) {
processIntent(getIntent());
}
}
您可能会说“将 processintent 方法从 onResume 中取出”...这不是一个选项,NFC P2P 模式要求您在 onResume 中处理收到的 NDEF 消息。
最佳答案
我建议重写onNewIntent()
来处理NFC Intent :
@Override
public void onNewIntent(final Intent intent) {
setIntent(intent);
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
processIntent(intent);
}
}
在processIntent()
中,您可以检查 Intent 是否已被处理:
private void processIntent(final Intent intent) {
if ((intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) {
// Log.v(TAG, "Ignoring intent; already treated this intent.");
return;
}
intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
// new intent; process it
...
}
这可能会解决您的问题。
关于java - 如何在onResume内判断设备是否已从 sleep 模式唤醒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15004853/