0

我正在爲功能撰寫濃縮咖啡測試,該功能使用廣播接收器過濾Intent.ACTION_TIME_TICK操作。本質上,系統會每分鐘觸發onReceive(..),並且我的UI可能會更新,也可能不會更新。問題是,我的UI測試現在必須休眠1分鐘,以確保onReceive(..)在執行語句前至少觸發了一次,前提是onReceive(..)觸發了UI更新。手動濃縮咖啡廣播意向

我想擺脫睡眠代碼並代表系統手動觸發onReceive(..),但Android文檔不可能與Intent.ACTION_TIME_TICK

這是受保護的意圖,只能由系統發送。

是否有可能實現我想要的或者完全不同的方法?

回答

0

結束引用最頂級的活動運行,並自己廣播消息。我能夠做到這一點是因爲實現存在於所有活動延伸的基本活動中。方法getCurrentActivity()的實現可以找到here

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); 
      } 
     } 
    } 
}