0

我正在创建一个应用程序,我可以在其中将约会添加到列表中。如果约会就在附近,我希望我的应用程序在约会当天的某个时间在状态栏中显示通知。

我使用来自http://developer.android.com/guide/topics/ui/notifiers/notifications.html的代码 来创建我的通知。

但是,脚本中的“when”参数有些混乱,因为状态栏通知总是在调用时触发。通知通知 = new Notification(icon,tickerText,when);

安排此类通知的最佳方式是什么?似乎没有简单的方法,我必须创建一个服务来启动一个带有线程的监听器活动来循环我的约会日期并在日期适合当前日期时显示通知?

4

1 回答 1

0

但是,脚本中的“when”参数有些混乱,因为状态栏通知总是在调用时触发。通知通知 = new Notification(icon,tickerText,when);

完全正确 - 调用时触发通知。如果像示例中那样将 when 变量设置为 System.currentTimeMilis(),则意味着 - 现在显示通知。至于触发您的通知的原因,这由您来处理。Activity 似乎不是一个好的选择,但 Service 可以。在应用程序启动时初始化您的服务(不要忘记在应用程序退出时停止它),并让它“监听”和触发通知。它可能看起来像:

public class NotifyService extends Service {

    private NotificationManager mNM;


    @Override
    public void onCreate() {
    mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
    //do some work, listen for change
    if (triggerSatisfied) showNotification();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return START_STICKY;
    }

    @Override
    public void onDestroy() {
        // Cancel the persistent notification.
        mNM.cancelAll();
    }


    @Override
    public IBinder onBind(Intent arg0) {
        return mBinder;
    }

     private final IBinder mBinder = new LocalBinder();


     private void showNotification() {
        //code for notification goes here
     }


     public class LocalBinder extends Binder {
            NotifyService getService() {
                return NotifyService.this;
            }
        }
于 2011-10-13T07:25:03.510 回答