Ho un'applicazione Android, quando viene eseguito un servizio, voglio mostrare la notifica sulla barra di stato. Quindi l'utente può navigare verso un'altra applicazione premendo il tasto HOME. Tuttavia, quando provo a riportare l'applicazione in esecuzione precedente a Front tramite l'icona di notifica, c'è qualche problema con l'attività esistente. Anche io lo dichiaro come modalità "Single Top" (voglio eseguire l'attività esistente poiché è in esecuzione un servizio associato), in qualche modo l'attività OnDestroy è stata chiamata prima di OnResume. Ecco il mio codice di creazione dell'oggetto di notifica. Potresti per favore indicarmi che cosa è sbagliato. Grazie.Come portare l'attività Android esistente in primo piano tramite notifica
risposta
Quando un'attività è in background, Android può interrompere l'attività in qualsiasi momento per liberare risorse. Consultare la documentazione Activity per i dettagli completi sul ciclo di vita.
L'attività deve essere preparata per salvare il suo stato nei metodi onPause o onSaveInstanceState. Il documento di cui sopra ha ulteriori dettagli sul salvataggio dello stato persistente.
Non penso che l'attività debba essere chiamata da "onDestroy". Solo "onPause" viene chiamato quando si passa allo sfondo. E "onResume" viene chiamato quando torna al frontend. Se faccio semplicemente clic sull'icona dell'applicazione per riavviare l'applicazione, non ci sono problemi, viene chiamato solo "OnResume". Tuttavia, se provo a fare clic sull'icona di notifica, l'attività diventa "onDestroy" -> "OnResume", che causa problemi. – user404012
onPause viene chiamato quando passa in background. Tuttavia, come i suoi stati nel documento di riferimento, Android può scegliere di uccidere l'attività in qualsiasi momento se ha bisogno delle risorse, e quindi onDestroy verrà chiamato. Non si può dipendere dal fatto che onDestroy non verrà chiamato, quindi è necessario gestirlo correttamente salvando lo stato. –
private void showNotification() {
Intent toLaunch = new Intent(getApplicationContext(), MySingleTopActivity.class);
//add these two lines will solve your issue
toLaunch.setAction("android.intent.action.MAIN");
toLaunch.addCategory("android.intent.category.LAUNCHER");
PendingIntent intentBack = PendingIntent.getActivity(getApplicationContext(), 0, toLaunch, PendingIntent.FLAG_UPDATE_CURRENT);
notification.setLatestEventInfo(getApplicationContext(), getText(R.string.GPS_service_name), text, intentBack);
...
}
notification.setLatestEventInfo (getApplicationContext(), getText (R.string.GPS_service_name), text, intentBack); text dovrebbe essere a Launch mi sembra .. – Siddhesh
+1 con la menzione che la dichiarazione PendingIntent dovrebbe essere 'PendingIntent contentIntent = PendingIntent.getActivity (this, 0, toLaunch, 0);' – Calin
vi consiglio di fare questo,
private void showNotification()
{
Intent toLaunch = new Intent(getApplicationContext(), DummyActivity.class);
// You'd need this line only if you had shown the notification from a Service
toLaunch.setAction("android.intent.action.MAIN");
PendingIntent intentBack = PendingIntent.getActivity(getApplicationContext(), 0,toLaunch, PendingIntent.FLAG_UPDATE_CURRENT);
....
}
Il DummyActivity dovrebbe semplicemente essere un'attività che si finisce sempre in caso OnCreate.
Nel file manifest, aggiungere queste righe
<activity class=".DummyActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
Spero che questo aiuta ...
Un altro modo per lanciare il vostro intento pacchetto.
private void NotificationwithLaucherSelfPackage(Context context , int notification_id){
Notification noti = new Notification.Builder(context)
.setContentTitle("Your Title")
.setContentText("Your Text")
.setSmallIcon(R.drawable.abc_ic_menu_share_mtrl_alpha)
.setContentIntent(PendingIntent.getActivity(context ,notification_id , getLauncherIntent(context) , PendingIntent.FLAG_UPDATE_CURRENT))
.build();
NotificationManager notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
}
private Intent getLauncherIntent(Context context){
return context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
}
- 1. Notifica portare in primo piano l'app senza cambiare attività
- 2. Come portare il widget Portare in primo piano in Qt?
- 3. Come portare un SKSpriteNode in primo piano?
- 4. Portare il controllo Winform in primo piano
- 5. Xamarin-Android Mvvmcross - Toccando ricevuto app inizio di notifica con spruzzi o portare in primo piano
- 6. Come posso portare un oggetto in primo piano in wpf?
- 7. Come portare l'applicazione in primo piano in ios?
- 8. Come portare un programma in background mettere in primo piano
- 9. Come portare una finestra in primo piano usando C#?
- 10. come portare in primo piano la finestra di dialogo choose.file()
- 11. Come portare la mia domanda in primo piano?
- 12. intenti per avviare l'attività - ma non portare in primo piano
- 13. Portare una finestra in primo piano in applescript
- 14. Non portare il pulsante in primo piano con il clic
- 15. Come portare l'indicatore della pagina circolare in primo piano in Android
- 16. modi per portare un app Android in fondo al primo piano
- 17. Come faccio a rimuovere una notifica in primo piano in Android Lollipop?
- 18. Notifiche Firebase in primo piano
- 19. L'attività corrente dell'applicazione Android pone in primo piano
- 20. Come portare un contenitore finestra mobile in esecuzione di nuovo in primo piano
- 21. Per identificare il processo in background e portare in primo piano in C++ WIN32
- 22. Sposta l'elemento dell'array in primo piano tramite la chiave dell'oggetto
- 23. C'è un modo in jQuery per portare un div in primo piano?
- 24. Android: servizio di primo piano vs. wakeLock
- 25. WPF - Porta finestra in primo piano
- 26. Come posso verificare quando un'app ritorna in primo piano dallo sfondo, ma non dalla notifica push?
- 27. Sintassi semplice per portare un elemento della lista in primo piano in python?
- 28. È possibile portare JFrame in primo piano ma NON mettere a fuoco?
- 29. Portare l'app in primo piano, attivare il display e sbloccarlo da AlarmManager?
- 30. FrameLayout primo piano con selettori
possibili duplicati: http://stackoverflow.com/questions/4047683/android-how-to-resume-an-app-from-a-notification, http://stackoverflow.com/questions/5502427/resume-application-and-stack-from-notification – Philipp