Member 12509947 Ответов: 1

Разработчики Android: есть ли лучший способ получить часовой пояс?


Я хочу сделать уведомление в точное время "работающим в фоновом режиме", Android-приложение.

но это разомкнутый принимать все мобильные аккумуляторная батарея зарядное устройство срок службы !.. Поэтому я ищу новый способ сделать это РИТ, есть ли лучший способ ?

Что я уже пробовал:

public void run() {
       BckGround",Toast.LENGTH_LONG).show();
        Calendar c = Calendar.getInstance();
        Notification notification=new Notification();
      notification.sound=      Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE+"://"+getPackageName()+"/row/a zan");
       // Toast.makeText(null, "start",Toast.LENGTH_LONG).show();
        int sec = c.get(Calendar.SECOND);
        int hours=  c.get(Calendar.HOUR_OF_DAY);
        int minites=c.get(MINUTE);

        int x,y,x2,y2,f,x3,y3,x4,x5,y4,y5;
        String Min,hou;
        x=19;y=1;
        x2=16;y2=1;
        x3=18;y3=1;
        x4=20;y4=1;
        x5=22;y5=1;
        f=0;
        //التاري
         int d,mo;
        d=18;
        mo=7;
        double Marroftime=720000;
        Calendar cn= Calendar.getInstance();
      int  day=cn.get(Calendar.DAY_OF_WEEK);
        int month=cn.get(Calendar.MONTH);
        while   (true) {

            c = Calendar.getInstance();
            hours = c.get(Calendar.HOUR_OF_DAY);
            minites = c.get(MINUTE);
            Min="M is: "+ minites;
            hou="H is: "+hours;

            if ((hours==x) && (minites==y)&&(f!=minites)){
                this.nb.setContentTitle("string");
                this.nb.setContentText("Another String");
                this.mn.notify(100, nb.build());
                f=minites;
                try {
                    Thread.sleep((long) Marroftime);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }


            }
          else  if ((hours==x2) && (minites==y2)&&(f!=minites)){
                this.nb.setContentTitle("time");
                this.nb.setContentText("now is time");
                this.mn.notify(100, nb.build());
                f=minites;
                try {
                    Thread.sleep((long) Marroftime);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
          else  if ((hours==x3) && (minites==y3)&&(f!=minites)){
                this.nb.setContentTitle("now ");
                this.nb.setContentText("now is time");
                this.mn.notify(100, nb.build());
                f=minites;
                try {
                    Thread.sleep((long) Marroftime);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
         else   if ((hours==x4) && (minites==y4)&&(f!=minites)){
                this.nb.setContentTitle("String");
                this.nb.setContentText("String");
                this.mn.notify(100, nb.build());
                f=minites;
                try {
                    Thread.sleep((long) Marroftime);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
         else   if ((hours==x5) && (minites==y5)&&(f!=minites)){
                this.nb.setContentTitle("String");
                this.nb.setContentText("String NEw");
                this.mn.notify(100, nb.build());
                f=minites;
                try {
                    Thread.sleep((long) Marroftime);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

        }
    }


}

1 Ответов

Рейтинг:
2

Patrice T

Совет:
- Используйте системный таймер, чтобы разбудить программу при следующем уведомлении.
- Не разделяйте часы и минуты, вместе они составляют время суток.
- Вы знаете, что что-то не так, когда повторяете код 5 раз для 5 уведомлений. Что бы вы сделали с 20 уведомлениями?
- Храните все уведомления в массиве.

В каждый момент Вы должны знать, какое уведомление является следующим, а следующее тестировать только во время запуска для инициализации.

Создание интервального таймера в Java android-Stack Overflow[^]
Таймер Android? Как? - переполнение стека[^]


Member 12509947

спасибо за ответ ...
хорошо, давайте начнем с системного таймера .. можете ли вы привести мне пример использования системного таймера?
вы видите, что я использую открытый цикл while, чтобы получить время .."когда приложение близко"(фоновая работа)
системный таймер поможет ?
2-Что делать, если мне нужно разделить часы и минуты ... Мне нужно уведомление о конкретном часе и минутах ?
3-пожалуйста, помочь сделать хороший выбор ?
Я только начал разрабатывать приложения для android ... так что мне нужна ваша помощь ...
спасибо