1

У меня есть IntentService, которому нужно подождать в методе a() для результатов onReceive() BroadcastReceiver().Android: Как подождать IntentService для BroadcastReceiver onReceive метод

На данный момент я использую LMAO ждать (5000) ... так что это не слишком элегантный

IntentService:

private boolean methodA() { 

try { 
      synchronized (mLocalBroadcastReceiver) { 
       mLocalBroadcastReceiver.wait(3000); 
      } 
     } catch (InterruptedException e) { 
      Log.e(TAG,"error, thread interrupted"); 
      e.printStackTrace(); 
     } 

if(CONSTANT == true){ 
    return true; 
else 
    return false; 
} 

BroadCastRecievier:

@Override 
public void onReceive(Context context, Intent intent) { 
    CONSTANT = true //changes somehow between true/false 
} 

Другими словами : возвращаемое значение метода А зависит от результатов onReceive(). Как синхронизировать два потока?

+0

вызов Methoda() внутри OnReceive метода –

+0

начать чтение документации для IntentService, потому что это не то, что это для –

+0

@TimCastelijns мой IntentService сделать больше других задачи разгрузки, а не только метод A(), methodA() - небольшая часть – oginski

ответ

0

Наконец я использовал нить подобное:

private void waitForResponse() { 
     //wait for response 
     thread = new WaitForStatus(); 
     thread.run(); 
     try { 
      synchronized (thread) { 
       thread.wait(); 
      } 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 

    private class WaitForAppStatus implements Runnable { 
      @Override 
      public void run() { 
       while (true) { 
        if (CONSTANT != -1) { 
         break; 
        } else { 
         try { 
          wait(400); 
         } catch (InterruptedException e) { 
          e.printStackTrace(); 
         } 
        } 
       } 
      } 
     }