我试图制作具有以下功能的活动A(启动器活动)。
1.使用nfc标记启动活动A,并在活动A开始后读取nfc标记。
2.当活动A在前台时检测到nfc标记。
它最初像一天一样工作。它会表现得像
onPause - > onNewIntent - >的onResume
将应用程序单独保留一天或可能一小时后,当我尝试转到活动A并扫描nfc标记时,它将表现得像
onPause - > onNewIntent - > onResume - > onPause - > onCreate - >的onResume。
最后3个步骤出现严重问题。我认为它应该在onNewIntent ??
之后停在onResume中无论是杀死应用程序,从Android任务列表中清除,也无法解决问题直到应用程序卸载并重新安装。它不仅仅发生在一个特定的设备上,它发生在我的大多数设备上。
想知道如何解决这个问题,或者是否有任何解决方法。非常感谢。
以下是我的代码:
活动A
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.adapter = NfcAdapter.getDefaultAdapter(this);
IntentFilter intentFilter = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
techLists = new String[][] {
new String[] {
NfcF.class.getName()
}
};
intentFiltersArray = new IntentFilter[] { intentFilter };
this.pendingIntent = PendingIntent.getActivity(this, 0,
new Intent(this, ((Object) this).getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
}
@Override
protected void onPause() {
if (this.adapter != null) {
this.adapter.disableForegroundDispatch(this);
}
super.onPause();
}
@Override
protected void onResume() {
if (this.adapter != null) {
this.adapter.enableForegroundDispatch(this, this.pendingIntent, intentFiltersArray, this.techLists);
}
super.onResume();
}
清单
<activity
android:name=".ActivityA"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/tech" />
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED" />
</intent-filter>
</activity>
答案 0 :(得分:1)
super.onResume();
之前
if (this.adapter != null) {
this.adapter.enableForegroundDispatch(this, this.pendingIntent, intentFiltersArray, this.techLists);
}
再次检查