J'essaye de faire l'activité A (l'activité de lancement) qui peut avoir la fonctionnalité ci-dessous.Le feu de répartition de premier plan de NFC à la fois onCreate et onNewIntent
1. Lancez l'activité A avec la balise nfc et lisez la balise nfc après le démarrage de l'activité A.
2. Détectez l'étiquette nfc lorsque l'activité A est sur le premier plan.
Il fonctionne d'abord comme un jour. Il se comporte comme
OnPause -> onNewIntent -> onResume
Après l'application est laissé seul pendant une journée ou possible d'une heure, lorsque je tente aller à l'activité A et analyser la balise nfc, il se comporte comme
onPause -> onNewIntent -> onResume -> onPause -> onCreate -> onResume.
Énormes problèmes avec les 3 dernières étapes. Je pensais qu'il devrait s'arrêter dans le onResume après l'onNewIntent ??
Peu importe kill application, effacer de la liste des tâches Android, ne résoudra pas non plus le problème jusqu'à ce que l'application désinstalle et réinstalle. Cela n'arrive pas seulement sur un appareil particulier, cela arrive sur la plupart de mes appareils.
Aimeriez-vous savoir comment résoudre ce problème ou s'il y a du travail. Merci beaucoup.
Ci-dessous mon code:
Activité 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();
}
Manifest
<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>
est 'OnDestroy()' 'avant d'être appelé onCreate()'? Si c'est le cas, vous voyez probablement une réponse à un changement de configuration. Android est en train de tuer l'activité actuelle et en créer une nouvelle pour gérer le changement de configuration. Vous pouvez empêcher cela en ajoutant 'android: configChanges =" orientation | screenSize "' à la balise '' dans le manifeste. –