Hallo Leute,
ich möchte eine Benachrichtigungsbibliothek (alles im Paket *.mynotifier) erstellen, mit welchen ich die User mittels NotificationManager (falls App im Hintergrund läuft) und Snackbar (wenn App aktiv ist) etc. über Ereignisse unterrichten kann. Prinzipieill läuft das schon und ist in eine App einprogrammiert. Ich habe mir überlegt, das zu modularisieren und diese Benachrichtigungsbibliothek auszulagern, beispielsweise als *.aar, um es auch in meinen anderen Apps benutzen zu können.
Ich würde dann diese lib
package com.example.myapp.mynotifiier;
class MyNotificationManager {
Context context;
NotificationManager mNotificationManager;
// Signelton
MyNotificationManager mMyNotMan = null;
private class MyNotificationManager(Context context) {
this.context = context;
mNotificationManager = (NotificationManager) this.context.getSystemService(Context.NOTIFICATION_SERVICE);
}
public static getInst(Context context) {
if (mNotificationManager == null) mMyNotMan = new MyNotificationManager(context);
return mMyNotMan;
}
public void sendNotification(NotificationCompat.Builder builder) {
Intent notificationIntent = new Intent(this.context, MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this.context);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(notificationIntent);
PendingIntent notificationPendingIntent =
stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
mNotificationManager.notify(0, builder.build());
}
}
Alles anzeigen
in der MainActivity (der eigentlichen HauptApp) erzeugen und als eine Art Singleton in dieser ganzen App verfügbar machen:
Frage 1: Mit gefällt zum Beispiel nicht, dass ich Context für getInst(getApplicationContext()) immer brauche. Komm ich auch drum herum?
Frage 2: In Zeilen 15 und 17 wird eine MainActivity.class als Parameter übergeben. In der zu benutzenden App ist es klar. Was würde ich dort übergeben, wenn ich dies in eine *.aar extrahiere und ich noch nicht wissen kann, wie die MainActivity meiner nächsten App heißt?
Frage 3: Gibt es da generell ein bestimmtes Entwurfsmuster bei sowas?
VIelen Dank schon mal für anregende Antworten.
VG
Mrt