在 onResume() 中多次调用 onNewIntent()
onNewIntent() being called in onResume() multiple times
我的问题是,在 onNewIntent() 函数中,我启动了一个新的意图来打开联系人应用程序并允许用户完成创建新联系人的过程,但是当我尝试退出联系人应用程序并返回时我的应用程序似乎再次调用了 onNewIntent() 很可能是由于这段代码。
@Override
public void onResume() {
super.onResume();
// Check to see that the Activity started due to an Android Beam
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
processIntent(getIntent());
}
}
有没有办法在调用 onNewIntent(由 processIntent 调用)后清除意图。
看起来您可以在 onNewIntent()
末尾调用 setIntent()
并使用一个新的 Intent,该 Intent 的 Action 值不会触发进一步处理。
这是一个示例,其中 Activity 的新意图设置为 "do_nothing" 的操作:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
//Do your current processing here:
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
//process intent
//.........
// set intent for Activity to new Intent with "do_nothing" as action
Intent i = new Intent();
i.setAction("do_nothing");
setIntent(i);
}
}
我的问题是,在 onNewIntent() 函数中,我启动了一个新的意图来打开联系人应用程序并允许用户完成创建新联系人的过程,但是当我尝试退出联系人应用程序并返回时我的应用程序似乎再次调用了 onNewIntent() 很可能是由于这段代码。
@Override
public void onResume() {
super.onResume();
// Check to see that the Activity started due to an Android Beam
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
processIntent(getIntent());
}
}
有没有办法在调用 onNewIntent(由 processIntent 调用)后清除意图。
看起来您可以在 onNewIntent()
末尾调用 setIntent()
并使用一个新的 Intent,该 Intent 的 Action 值不会触发进一步处理。
这是一个示例,其中 Activity 的新意图设置为 "do_nothing" 的操作:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
//Do your current processing here:
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
//process intent
//.........
// set intent for Activity to new Intent with "do_nothing" as action
Intent i = new Intent();
i.setAction("do_nothing");
setIntent(i);
}
}