如何同时为多个报警管理器设置单个通知

时间:2012-03-02 01:51:40

标签: java android

我的应用程序要求是用户可以同时设置多种类型的提醒,因此此时会弹出通知及其声音

我的代码是:

public class ReminderService extends Service {
    int id;

    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onStart(final Intent intent, int startId) {
        // TODO Auto-generated method stub
        super.onStart(intent, startId);
        if (intent != null) {
            new Thread() {
                public void run() {
                    id = intent.getIntExtra("ID");
                    showNotification(id);
                }
            }.start();

        }
    }

    Handler mHandler = new Handler();

    public void showNotification(final int id) {
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                // TODO Auto-generated method stub

                try {
                    Notification notification = new Notification(
                            R.drawable.icon, getString(R.string.app_name),
                            System.currentTimeMillis());
                    notification.sound = Uri.parse("android.resource://"
                            + getPackageName() + "/" + R.raw.pluck_b);
                    Intent i = new Intent();
                    i.setClass(ReminderService.this, MyClass.class);
                    i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                    notification.setLatestEventInfo(ReminderService.this,
                            getString(R.string.app_name), message,
                            PendingIntent.getActivity(ReminderService.this, 0,
                                    i, 0));
                    NotificationManager nm = (NotificationManager) ReminderService.this
                            .getSystemService(Context.NOTIFICATION_SERVICE);
                    notification.flags |= Notification.FLAG_AUTO_CANCEL;
                    nm.notify((int) id, notification);

                } catch (Exception e) {
                }
            }
        });
    }
}

假设用户设置了10:30的提醒,所以它会拨打3次此服务,并且会有3次不同的通知,所以通知声音也不正确,因为它会创建3个不同的通知。

所以现在需要做什么,我想使用远程视图为这3个不同的提醒调用单个通知,因此声音会单一。

但是要创建远程视图,我如何同时识别警报的数量。

请任何人帮我确定最佳方法,在这种情况下我必须做的事情,因此通知声音对于不同的通知是单一的。

1 个答案:

答案 0 :(得分:0)

您可以实施Observer Pattern

这在类之间建立了一对多关系,允许您从一个事件中通知多个类。