サービスに登録されたダイナミック ブロードキャスト レシーバーがあり、サービスが重い 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;
}
}
}