java - 如何在onResume内判断设备是否已从 sleep 模式唤醒

标签 java android nfc nfc-p2p

是否有办法检查 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/

相关文章:

java - 如果我知道音频文件的确切格式并需要重复播放,该如何在Java中播放声音?

android - 从多个类文件运行 junit 测试用例 (Robotium)

c# - WP8.1是否支持Mifare Classic阅读?

c# - 使用 ACR122U 作为 Reader/Writer 在 Windows Form Application C# 中将 Ndef 写入 NFC 标签

android - 如何将跟踪参数添加到 NFC 标签上的 Android 包名称?

java - 将 Hibernate 3 升级到 Hibernate 4.3

java - Basic MediaPlayer 在使用 vlcj 时出现 NoClassDefFoundError,NativeLibrary 问题?

java - java 7在某些情况下会自动使用多核吗?

java - Android 后台任务计算量大

android - Openstreetmap 隧道