我有一个自定义MyNotificationManager
我的应用程序(package com.ralfi.myapp.mynotifier;
),到目前为止一直有效。我想将这个mynotifier
包作为单个* .aar库提取,然后我可以将其导入到我的所有其他应用程序并在那里使用它。
package com.ralfi.mynotifiier;
class MyNotificationManager {
Context context;
NotificationManager notificationManager;
public class MyNotificationManager(Context context) {
this.context = context;
mNotificationManager = (NotificationManager) this.context.getSystemService(Context.NOTIFICATION_SERVICE);
}
//..
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());
}
}
我会在我的Android应用程序项目中实例化它,并为那里的任何其他类生成ist静态可用。
import com.ralfi.mynotifiier.MyNotificationManager; // e.g.: delivered in a *.aar
class MyRootApplication
//..
private static MyNotificationManager myNotificationManager;
//..
void onCreate(){
myNotificationManager = new MyNotificationManager(context);
//..
}
public static AppNotificationManager getAppNotificationManager() {
return appNotificationManager;
}
}
主要问题:正如您在MyNotificationManager.sendNotification()
中所看到的,我需要MainActivity.class
作为Intent构造函数和X.addParentStack()方法的参数。当我打算将MyNotificationManager作为* .aar库提供时,我当时不知道,在Android App项目中会调用哪个MainActivity?我怎样才能使这个通用?
附带问题:这是通过调用MyRootApplication.getAppNotificationManager().sendNotification(...)
在最终项目中使用任何类的正确方法吗?是否有更好的设计模式? (依赖注射?)
答案 0 :(得分:0)
MainQuestion-你在创建时将它传递给.class变量。 Foo.class实际上是Class类型的变量。虽然你假设一个应用程序有一个“主要活动”,并且它想要所有通知去 - 我发现这种情况很少发生。
附带问题 - 我认为我不认为所有通知都想要进行一项活动。实际上,我甚至不会假设所有通知都没有需要捆绑到intent中的额外参数。我让sendNotification将一个意图作为参数。