intent.getextra () получает значение null, а intent.hasextra () не работает во втором действии - PullRequest
0 голосов
/ 28 мая 2018

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

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

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) не выполняются.

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

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

1 Ответ

0 голосов
/ 28 мая 2018

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

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

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

...