0

私はエスプレッソのテストをしていますが、フィーチャ用に書いているのですが、この機能はIntent.ACTION_TIME_TICKアクションをフィルタリングするブロードキャストレシーバを使用しています。本質的に、onReceive(..)はシステムによって毎分起動され、私のUIは更新されないかもしれません。問題は、私のUIテストは今onReceive(..)がUI更新を引き起こしたと仮定して、文を実行する前にonReceive(..)が少なくとも一度はトリガーされていることを確認するために1分間眠らなければなりません。エスプレッソのインテントは手動で

私はスリープコードを取り除き、手動でシステムの代わりに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); 
      } 
     } 
    } 
} 
関連する問題