0

次のメソッドで、インテント サービスで機能しないブール値 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 の場合、どのようにしてメッセージをブロードキャストできるのでしょうか? 私は明らかに本当に基本的な何かを見逃していますが、それが何であるかはわかりません

4

1 に答える 1

3

あなたのif状態は:

!updating_questions

これは、そうでない場合にこのブロックを実行することを意味します (演算子を参照してください)。updating_questions true!

于 2012-05-06T09:05:02.613 に答える