Ich habe meine benutzerdefinierte Dialogfeld Builder in meiner App, die von vielen Ereignissen auslösen wird: Asynctasks, Web-Service-Nachrichten, UI-Eingabefehler oder von Diensten, die keinen Aktivitätskontext haben . Ich habe immer eine Aktivität namens currentActivity
in meiner Application-Klasse erstellt. dann auf Wiederaufnahme von jeder Aktivitäten ihre sitzen auf currentActivity
.Was ist die beste Praxis von Global Dialog in meiner Anwendung
@Override
protected void onResume() {
super.onResume();
MyApplication.currentActivity = MainActivity.this;
Dann habe ich im Falle der Erstellung von Dialogen diesen Kontext verwendet. aber ich hatte ein Problem. zum Beispiel habe ich RegisterActivity geöffnet und dann currentActivity
geändert. Wenn die App dann zum Hintergrund oder zu einem anderen Fall kommt, in dem sich eine andere Aktivität geöffnet hat, stürzt meine App beim Erstellen eines Dialogs mit diesem Kontext ab. so Handhabung Hexe Aktivität ist currentActivity
ist ein Kopfschmerz. Ich habe gegoogelt und festgestellt, dass einige Leute den CustomDialog in eine Nicht-Layout-Aktivität einbetten und dann diese Aktivität öffnen. aber es scheint keine gute Lösung zu sein.
AKTUALISIERT
zum Beispiel habe ich eine SMSManager Klasse, die meine ganze Senden von SMS behandeln. Ich möchte den Dialog öffnen, damit der Benutzer einige benutzerdefinierte Optionen auswählt, bevor er SMS sendet.
Was ist also die beste Praxis von Global Dialog in meiner gesamten Anwendung?
I Ich weiß, dass es schlecht ist, die aktuelle Aktivität beizubehalten, und ich suche nach einer besseren Lösung. Mein benutzerdefinierter Dialog Builder ist sehr ähnlich zu Ihrem, aber der Punkt es Kontext. Wie gesagt, ich möchte den Dialog von vielen Klassen öffnen, von denen einige keinen Aktivitätskontext haben. Zum Beispiel möchte ich einen Dialog aus meiner SMS-Manager-Klasse oder Web-Service-Klasse anzeigen, der mit dem Anwendungskontext arbeitet. daher kann ich den Dialog mit ihrem Kontext nicht öffnen. – Kenji
Ich habe meine Antwort mit dem Hinweis auf Benachrichtigungen – artkoenig
aktualisiert, so dass Sie sagen, dass kein UI-Dialog von Diensten angezeigt wird, senden Sie einfach ein Ereignis und fangen Sie mit Aktivitäten auf. Das klingt gut und passt zur MVC-Architektur. Aber was ist, wenn mein Dienst mit dem Benutzer kommunizieren und etwas eingeben möchte? – Kenji