Intent.getextra () получает null, а intent.hasextra () не работает во втором действии

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

В первом действии

MainActivity.java

class sender extends AsyncTask <void, void, void>
{       
   @Override
   protected Void doInBackground(Void... params) {
   {
      while(true)
      {
           if (!intent.hasextra())
           {
                String data = dataBuffer;
                intent.putextra(EXTRA_MESSAGE,data);  
           }
       }
   }
    @Override
    protected void onPreExecute() {
         //  intent.putextra(EXTRA_MESSAGE,"Test data"); --> This is working 
         startActivityForResult(intent, 333);

    }

}

SecondActivity.java

class receiver extends AyncTask <void, void, void>
{
    while(true)
    {
         if (intent.hasextra())
          {
             resultString = intent.getextra(MainActivity.EXTRA_MESSAGE);
             mHandler.obtainMessage(MESSAGE_READ,resultString 
                                             ).sendToTarget();
             intent.removExtra(MainActivity.EXTRA_MESSAGE);
          }
    }
}

При отладке оба потока выполняются, но условия if внутри while (true) не выполняются.

Примечание. Когда Before StartActivityForResult (), putExtra отправляет данные, а в secondActivity я мог получить данные.

Скажите, пожалуйста, почему данные не отправляются и не принимаются как в doInbackground ().

есть ли вероятность, что dataBuffer станет нулевым?

Sree 28.05.2018 11:18

Нет, я проверял, всегда есть строка.

Giri prakash 30.05.2018 07:20
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
203
1

Ответы 1

When Debugging, both threads are executing but the if-conditions inside while(true) are not satisfied.

Посмотрите на опубликованный вами код, это потому, что оба AsyncTask работают одновременно и, следовательно, при получении Asynctask переходит на doInBackground(), он не нашел значений Intent. Вам лучше отложить выполнение вашего второго AsyncTask.

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

Я ввел задержку, но во втором действии данные по-прежнему не поступают. Скажите, пожалуйста, ваше предложение о взаимодействии между двумя видами деятельности.

Giri prakash 30.05.2018 07:03

Другие вопросы по теме