1

論理エラーのように思えます。これを数回確認しましたが、誰かが私に正しい方向を示すことができれば、すべてが正しいようです:

午前 10 時、午後 4 時、午後 11 時の特定の時間に呼び出されるサービスがあります。サービスは正常に動作し、通知が作成されます。しかし、曜日を比較するロジックを入れると、問題の日でなくても毎日呼び出されます。

コード スニペット:

public void onStart(Intent intent, int startId) {
    Calendar c = Calendar.getInstance();
    int day = c.get(Calendar.DAY_OF_WEEK);
    int hour = c.get(Calendar.HOUR_OF_DAY);
    if (day == Calendar.SATURDAY || day == Calendar.WEDNESDAY); //always true
    {
        if(hour == 10 || hour == 16) //correct regardless of anterior
        {
            //create notification


        }
        else if(hora == 23)
        {
            //create other type of intent

        }
    }
    super.onStart(intent, startId);     

}
4

2 に答える 2

6

if ステートメントの後にセミ カラムを配置しているため、期待どおりの結果が得られません

 if (day == Calendar.SATURDAY || day == Calendar.WEDNESDAY);

Semi カラムを取り外します。

于 2012-05-04T16:40:43.330 に答える
1

実際には、常に正しいとは限りません。セミコロンは、if ステートメントを次のコード ブロックから分離し、独立させます。

そのため、if ステートメントが評価され、if の結果に依存せずにコード ブロックが実行され、実行する必要があるかどうかが判断されます。

于 2012-05-04T16:45:57.633 に答える