Size: a a a

Android NDK (C++) — русскоговорящее сообщество

2020 June 26

AP

Andrey Panchenko in Android NDK (C++) — русскоговорящее сообщество
Sergei Loskutnikov
В начале определëн и я хочу его передать
в начале чего?
источник

AP

Andrey Panchenko in Android NDK (C++) — русскоговорящее сообщество
Sergei Loskutnikov
future_result.OnCompletion([] (const firebase::Future<void>& completed_future, void* user_data) {

          if(completed_future.error() == 0){
              completed_future.result_void();
              runLogging(" my run this in FUTURE !! \n");
              firebase::remote_config::ActivateFetched();
              auto newNnfff = firebase::remote_config::GetString("keyLos223");
              runLogging(" my get strings == %s \n", newNnfff.c_str() );
           //   exists
              auto* aw = (int*)(user_data);
              //if(*aw){
               //   runLogging(" TRUE USERS  %d \n");
              //}else{
               runLogging(" FALSE USERS %d  \n", *aw);
              //}

          }else{
              runLogging(" Error in my future ! \n");
          }

   }, &aNN);
а future_result где объявлен?
источник

SL

Sergei Loskutnikov in Android NDK (C++) — русскоговорящее сообщество
Перед этой функцией вот такой код int aNN = 12 ; auto future_result = firebase::remote_config::Fetch (0) ;
источник

SL

Sergei Loskutnikov in Android NDK (C++) — русскоговорящее сообщество
Sergei Loskutnikov
future_result.OnCompletion([] (const firebase::Future<void>& completed_future, void* user_data) {

          if(completed_future.error() == 0){
              completed_future.result_void();
              runLogging(" my run this in FUTURE !! \n");
              firebase::remote_config::ActivateFetched();
              auto newNnfff = firebase::remote_config::GetString("keyLos223");
              runLogging(" my get strings == %s \n", newNnfff.c_str() );
           //   exists
              auto* aw = (int*)(user_data);
              //if(*aw){
               //   runLogging(" TRUE USERS  %d \n");
              //}else{
               runLogging(" FALSE USERS %d  \n", *aw);
              //}

          }else{
              runLogging(" Error in my future ! \n");
          }

   }, &aNN);
Перед вот этой
источник

AP

Andrey Panchenko in Android NDK (C++) — русскоговорящее сообщество
предлагаю скинуть весь кусок, который относится к обсуждению, на pastebin
источник

SL

Sergei Loskutnikov in Android NDK (C++) — русскоговорящее сообщество
Я скину чуть попозже и сюда сразу отпишусь ( не у аппарата )
источник

SL

Sergei Loskutnikov in Android NDK (C++) — русскоговорящее сообщество
!
источник

SL

Sergei Loskutnikov in Android NDK (C++) — русскоговорящее сообщество
источник

SL

Sergei Loskutnikov in Android NDK (C++) — русскоговорящее сообщество
вот
источник

SL

Sergei Loskutnikov in Android NDK (C++) — русскоговорящее сообщество
Буду очень, крайне признателен за помощь
источник

AP

Andrey Panchenko in Android NDK (C++) — русскоговорящее сообщество
У тебя aNN и future_result находятся в той же функции, которая вызывает коллбек. В С++ это не работает как в Java. Как только функция из 21 строки заканчивается, то эти два объекта уничтожаются (у них вызываются деструкторы). В памяти они может и могут ещё повисеть, но нам это не интересно — для нас эти объекты мертвы.

То есть, если совсем на пальцах. Ты делаешь то что в строке 38, потом ставишь коллбек, потом сразу же функция заканчивается и future и aNN удаляются.
источник

SL

Sergei Loskutnikov in Android NDK (C++) — русскоговорящее сообщество
Но стоп, он же future_result понимает как отдельный поток в который вы можем что-то передать - а как мы тогда в него что-либо передадим, если всё в функции и есть то, что он потом уничтожит ?
источник

AP

Andrey Panchenko in Android NDK (C++) — русскоговорящее сообщество
future_result это экземпляр объекта типа Future
источник

AP

Andrey Panchenko in Android NDK (C++) — русскоговорящее сообщество
Не указатель на объект
источник

AP

Andrey Panchenko in Android NDK (C++) — русскоговорящее сообщество
Поэтому как только область видимости закончится — он сдохнет
источник

AP

Andrey Panchenko in Android NDK (C++) — русскоговорящее сообщество
какая-то работа на фоне наверное там идёт, но коллбек твой вызван не будет
источник

SL

Sergei Loskutnikov in Android NDK (C++) — русскоговорящее сообщество
И такой вопрос  - более актуальный - а как мне дождаться в этой функции выполнения onComplete - он мне его вызывает, когда я уже в java/kotlin - то есть, он его выполняет сильно позже,
источник

AP

Andrey Panchenko in Android NDK (C++) — русскоговорящее сообщество
не использовать OnCompletion, использовать статус. проверять статус, пока он не примет нужное значение.
источник

AP

Andrey Panchenko in Android NDK (C++) — русскоговорящее сообщество
или прокидывать вызов OnCompletion в джаву
источник

SL

Sergei Loskutnikov in Android NDK (C++) — русскоговорящее сообщество
Andrey Panchenko
или прокидывать вызов OnCompletion в джаву
Чтобы прокинуть в джаву, мне надо что он имел все данные JNIEnv и прочее - и тогда я могу из него вызвать java функцию - но я не могу в него ничего передать ( как я оттуда что-либо вызову ? ) и да, status не работает - он сначала пробежит и ничего не покажет, то есть, как закольцевать программу, чтобы он не вис, а дождался status == kFutureComplete что-то там - я так и не наш\л
источник