0

Ich habe eine Espresso-Test Ich schreibe für eine Funktion, und die Funktion verwendet einen Rundfunkempfänger Filterung der Intent.ACTION_TIME_TICK Aktion. Im Wesentlichen wird das onReceive (..) jede Minute vom System ausgelöst und meine UI kann aktualisiert werden oder nicht. Problem ist, dass mein UI-Test jetzt für 1 Minute schlafen muss, um sicherzustellen, dass onReceive (..) mindestens einmal ausgelöst wurde, bevor eine Anweisung ausgeführt wird, vorausgesetzt, onReceive (..) hat das UI-Update ausgelöst.Espresso Rundfunk Intents manuell

Ich möchte den Schlaf-Code loswerden und manuell das onReceive (..) im Auftrag des Systems auslösen, aber Android-Dokumente ist dies mit nicht möglich.

Dies ist eine geschützte Absicht, die nur vom System gesendet werden kann.

Ist es möglich zu erreichen, was ich will oder vielleicht einen anderen Ansatz vollständig?

Antwort

0

Beendet, um die aktivste Aktivität anzuzeigen und die Nachricht selbst zu senden. Ich konnte dies tun, weil die Implementierung in der Basisaktivität lebt, von der alle Aktivitäten ausgehen. Die Methode getCurrentActivity() Implementierung kann here gefunden werden.

public static void triggerACTION_TICK_BROADCAST() { 
    Activity activity = getCurrentActivity(); 
    if (activity != null) { 
     if (activity instanceof BaseActivity) { 
      BaseActivity baseActivity = (BaseActivity) activity; 
      BroadcastReceiver tickReceiver = baseActivity.getTickReceiver(); 
      if (tickReceiver != null) { 
       Intent intent = new Intent(); 
       intent.setAction(Intent.ACTION_TIME_TICK); 
       tickReceiver.onReceive(InstrumentationRegistry.getContext(), intent); 
      } 
     } 
    } 
}