Android - Планирование уведомления в пользовательской панели - PullRequest
0 голосов
/ 13 октября 2011

Я создаю приложение, в котором я могу добавлять встречи в список. Если встреча рядом, я хочу, чтобы мое приложение показывало уведомление в строке состояния в день встречи в определенный час.

Я использовал код от http://developer.android.com/guide/topics/ui/notifiers/notifications.html создать мое уведомление.

Однако параметр «когда» в сценарии несколько сбивает с толку, потому что уведомление в строке состояния всегда вызывается при вызове. Уведомление уведомление = новое уведомление (значок, tickerText, когда);

Как лучше всего запланировать такое уведомление? Кажется, что нет простого способа, и мне нужно создать сервис, который запускает активность слушателя с потоком, чтобы зациклить мои встречи и показывать уведомление, когда дата соответствует текущей дате?

1 Ответ

0 голосов
/ 13 октября 2011

Однако параметр «когда» в скрипте несколько сбивает с толку, потому что уведомление в строке состояния всегда вызывается при вызове.Уведомление уведомление = новое уведомление (значок, tickerText, когда);

Точно - уведомление вызывается при вызове.Если для переменной system.currentTimeMilis () задано значение, как в примере, это означает - показать уведомление сейчас.То, что вызывает ваши уведомления, решать вам.Деятельность не кажется хорошим выбором, но Служба делает.Инициализируйте свой сервис при запуске приложения (и не забудьте остановить его при выходе из приложения), и пусть он выполняет «прослушивание» и запуск уведомлений.Это может выглядеть так:

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;
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...