大家好我在使用我正在开发的应用程序时遇到了麻烦。我使用NotificationListenerService,提示用户从菜单中设置Notification权限,所有工作都完美无瑕。但是当我更新我的应用程序,或者当我的服务被杀死时,由于未知原因,不会重新启动。
在onCreate()
中,我保留了对instance = this;
服务的引用,我用它来确定我的服务是否从其他类运行。
这是onNotificationPosted(StatusBarNotification notification)
中扩展NotificationListenerService的一些方法:
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
if (MyOtherService.hasInstance()) {
Log.v(TAG, "onNotificationPosted called by system");
int count_debug = 1;
for (StatusBarNotificationListenerInterface listener : toBeNotified) {
if(listener != null) {
Log.v(TAG, "Loop call #" + count_debug++);
listener.onNotificationHotAdded(sbn);
}
}
} else {
// MyOtherService isn't running. Does nothing but clearing toBeNotified list.
toBeNotified.clear();
Log.v(TAG, "onNotificationPosted: MyOtherService is stopped ");
}
}
public static void registerForNotifications(StatusBarNotificationListenerInterface listener) {
if (!toBeNotified.contains(listener)) {
Log.v(TAG, listener.getClass().getCanonicalName() + " added to toBeNotified list");
toBeNotified.add(listener);
}
}
注意:MyOtherService扩展了DreamService,只是注册自己调用registerForNotifications()
方法。
在MyNotificationListener
我覆盖onStartCommand
返回START_STICKY
我真的很疯狂,这些东西几乎在每次更新时被杀死。