Предоставление запрограммированного содержимого таймером в приложении Flutter / Firebase [дубликат]

== сравнивает ссылки на объекты.

.equals() сравнивает значения String.

Иногда == дает иллюзии сравнения значений String, как в следующих случаях:

String a="Test";
String b="Test";
if(a==b) ===> true

Это связано с тем, что при создании любого строкового литерала JVM сначала ищет этот литерал в пуле строк, и если он найдет совпадение, эта же ссылка будет передана новой String. Из-за этого получаем:

(a == b) ===> true

                       String Pool
     b -----------------> "test" <-----------------a

Однако == не выполняется в следующем случае:

String a="test";
String b=new String("test");
if (a==b) ===> false

В этом случае для new String("test") оператор new String будет создан в куче, и эта ссылка будет указана на b, поэтому b будет дана ссылка на кучу, а не на String pool.

Теперь a указывает на String в пуле String, а b указывает на String в куче. Из-за этого мы получаем:

, если (a == b) ===> false.

                String Pool
     "test" <-------------------- a

                   Heap
     "test" <-------------------- b

Пока .equals() всегда сравнивает значение String, поэтому дает true в обоих случаях:

String a="Test";
String b="Test";
if(a.equals(b)) ===> true

String a="test";
String b=new String("test");
if(a.equals(b)) ===> true

Таким образом, использование .equals() всегда лучше.

52
задан Mowzer 2 December 2017 в 21:40
поделиться

2 ответа

Еще нет встроенного триггера runat / cron.

На данный момент лучшим вариантом является использование внешней службы для запуска функции HTTP периодически. См. Этот пример в functions-samples repo для получения дополнительной информации.

Я также очень рекомендую прочитать это сообщение в блоге Firebase: Как планировать (Cron) Работы с Облачные функции для Firebase и этого видео: Функции временного облака для Firebase с использованием HTTP-триггера и Cron .

58
ответ дан Frank van Puffelen 17 August 2018 в 09:55
поделиться
  • 1
    Выясните exports.cronReminders: измените первую букву имени func на нижний регистр – Konstantin Konopko 10 February 2018 в 15:31
  • 2
    @Frank это все еще держится сегодня? Или есть лучший вариант, также когда это экономически выгодно ... – Famic Tech 3 April 2018 в 02:18
  • 3
    Ничего не изменилось. Включая тот факт, что cron-job.org, о котором говорит Jen в сообщении в блоге, можно использовать бесплатно. – Frank van Puffelen 3 April 2018 в 03:52
  • 4
    Видео с Jen было помечено как устаревшее. Так есть другой способ сделать это? – b-fg 29 May 2018 в 18:17
  • 5
    Этот подход столь же важен сегодня, как и когда было сделано видео (и запись в блоге). Синтаксис немного изменился, но я не думаю, что на этот конкретный случай влияет это. Если вам не удается выполнить эту работу, откройте вопрос, который показывает, что вы уже сделали. – Frank van Puffelen 29 May 2018 в 19:15

Что вы можете сделать, это развернуть экземпляр AppEngine, который запускается заданием cron и испускает PubSub. Я написал сообщение в блоге специально для этого, вы можете посмотреть:

https://mhaligowski.github.io/blog/2017/05/25/scheduled-cloud-function -execution.html

7
ответ дан mhaligowski 17 August 2018 в 09:55
поделиться
  • 1
    Какова предполагаемая стоимость в месяц, для задания cron, которое срабатывает один раз в час? – Ehtesham Hasan 28 February 2018 в 16:23
  • 2
    @EhteshamHasan Похоже, что это потенциально бесплатно: cloud.google.com/free . В настоящее время 28 часов часов в сутки бесплатно; Кроме того, есть экземпляр f1-micro для Google Compute Engine с Linux, в котором работают клоны бесплатно. – bitsoflogic 6 March 2018 в 20:29
Другие вопросы по тегам:

Похожие вопросы: