1

Ich habe IntentService, die in der Methode a() auf Ergebnisse von onReceive() von BroadcastReceiver() warten müssen.Android: Warten auf IntentService für BroadcastReceiver onReceive-Methode

Vorerst ich benutze lmao wait (5000) ... so ist es nicht zu elegant

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 
} 

Mit anderen Worten: : Der Rückgabewert von methodA hängt vom Ergebnis von onReceive() ab. Wie synchronisiert man zwei Threads?

+0

Anruf methodA() innerhalb von OnReceive Methode –

+0

durch das Lesen der Dokumentation für IntentService beginnen, weil dies nicht das, was es für –

+0

@TimCastelijns ist mein IntentService mehr andere tun Offload-Aufgaben, nicht nur methodA(), methodA() ist ein kleiner Teil – oginski

Antwort

0

Schließlich verwendet i-Thread wie folgt aus:

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(); 
         } 
        } 
       } 
      } 
     } 
Verwandte Themen