2

サービスに登録されたダイナミック ブロードキャスト レシーバーがあり、サービスが重い SD カードの読み取り/書き込み操作を while(somecondition) ループで実行しています。

ブロードキャストが別のアプリケーション (他のプロセスにある) から送信されると、ブロードキャスト レシーバーが受信しません。

この同じブロードキャストは、while ループを実行していないときに受信されます。

また、放送受信機が実行されるまでの時間を与えるために、Thread.Sleep(100) を使用してループの終わりを設定しようとしましたが、機能していません。

これに関するヘルプは、私を大いに助けます。

-よろしくお願いします、まんじゅう

Code below for registering BxRx:
this.registerReceiver(myReceiver, new IntentFilter(ACTIVITY_NAME));

code below for sending broadcast:
Intent intnt = new Intent(ACTIVITY_NAME);
            intnt.putExtra("STOP_ALL_TESTING", true);
            Log.d(TAG,"Sending BX STOP_ALL_TESTING");
            myActivity.this.sendBroadcast(intnt);

code below for while loop:
while(somecondition){
:
:
:
Thred.sleep(100);
}


    public void onReceive(Context context, Intent intent) {
            Log.d(TAG,"Received intent: "+intent.getAction());
            boolean flag = intent.getBooleanExtra("STOP_ALL_TESTING", false);
            Log.d(TAG,"Flag set to: "+flag);

            if((boolean)intent.getBooleanExtra("STOP_ALL_TESTING",false)){
                Log.d(TAG,"Broadcast received to STOP_ALL_TESTING");
                Log.d(TAG,"Bx Rx, setting flag to stop testing as requested by user");
                synchronized(this){
                    bStopTesting=true;
                }
            }
        }
4

1 に答える 1