服务的Android通知

时间:2014-07-03 14:16:46

标签: android service alarmmanager android-notifications

我一直在尝试开发这些功能几天,并且不断收到错误和错误。我正在制作一个应用程序,可以在需要祷告的时候通知用户。我有一个以json格式从服务器下载的数据库中的所有祈祷时间。由于我多次检查,数据都是正确的。

我创建了一个使用AlarmManager设置闹钟的服务。 然后我将MainActivity绑定到服务。在主要活动中,我使用名为 setAlarmAccordingToDB()的服务中的方法设置警报。 问题是当我绑定我的服务时。应用关闭时,服务会被破坏。即将发出通知。

然后我尝试启动该服务并将其绑定到我的activity.Called setAlarmAccordingToDB()。发生了什么事是重复调用setAlarmAccordingToDB。它不停地设置新的警报。

有关如何设置即将发出的通知的任何建议?

2 个答案:

答案 0 :(得分:1)

您可能需要使用Wakeful服务,因此在调用警报时设备/进程会被唤醒。

我在我的应用程序中使用了这段代码一段时间(不是项目,只是从Mark的示例中修改了我的代码),效果很好。

https://github.com/commonsguy/cwac-wakeful

答案 1 :(得分:0)

我试图为broadcastReceiver使用一个单独的类,它似乎工作。我刚刚使用了Alarm Manager和BroadcastReceiver。修改后的代码后,即使手机屏幕关闭且应用关闭,我的应用也可以触发通知。

在此之前我使用: -

        broadcastReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {

               displayNotification();

            }
        };

现在,我创建了一个类: -

public class Receiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        NotificationManager notificationManager;
        notificationManager = (NotificationManager)context.getSystemService(context.NOTIFICATION_SERVICE);
        displayNotification(context);

    }
}

在AndroidManifest.xml中我添加了

<receiver android:name=".Receiver" android:process=":remote"></receiver>