次のメソッドで、インテント サービスで機能しないブール値 if(!updating_questions) をチェックしました。
private void sendBroadcast(Context context, String key, String value){
//Don't broadcast if updating questions
Util.log_debug_message("@@@@ Updating questions - " + updating_questions);
if(!updating_questions){
Util.log_debug_message("@@@@ Broadcasting, updating_questions = " + updating_questions);
Broadcast.sendBroadcast(context, ResponseReceiver.ACTION_RESP, Intent.CATEGORY_DEFAULT,
key, value);
}
}
updates_questions フラグはグローバル プライベート変数であり、その値は false です
private boolean updating_questions = false;
値は onHandleIntent(Intent intent) メソッドのエクストラから設定されます
updating_questions = intent.getBooleanExtra(AppConstants.C2DM_MESSAGE_UPDATE_QUESTIONS, false);
値は次を使用して設定されます。
if(updating_questions){
refreshService.putExtra(AppConstants.C2DM_MESSAGE_UPDATE_QUESTIONS, true);
} else {
refreshService.putExtra(AppConstants.C2DM_MESSAGE_UPDATE_QUESTIONS, false);
}
このチェックは適切に動作しているようで、コンソールの出力は値が偽であることを示していますが、条件は真であるかのように扱われています
D/QuizApp ( 878): @@@@ Updating questions - false
D/QuizApp ( 878): @@@@ Broadcasting, updating_questions = false
では、値が false の場合、どのようにしてメッセージをブロードキャストできるのでしょうか? 私は明らかに本当に基本的な何かを見逃していますが、それが何であるかはわかりません