Android,if / else构造总是失败(编译器无法读取更改)

时间:2015-10-24 16:46:30

标签: android if-statement compiler-errors handler intentservice

我尝试做的事情应该非常简单,如果当前时间在指定时间之前或之后(通过),我会调用 IntentService定期在后台检查作为MainActivity意图中的额外内容)并在发生时收到通知。

在Thread的run()方法中,我得到一个当前时间的实例,并在重新运行之前将其用作 if / else 结构中之前指定的实例。线。 问题是它始终用于"否则"即使当前时间在另一个之后。这个问题太奇怪了,任何人都可以解释一下错误在哪里?

这是我的IntentService类:

public class MyCheck extends IntentService {

int hour = 0; int minute = 0;
int i = 0;
private static final String TAG = "Check";
int hourNow;
int minuteNow;

Handler handler = new Handler();


public MyCheck() {
    super(MyCheck.class.getName());
}


@Override
protected void onHandleIntent(Intent intent) {

    Log.w(TAG, "Service Started!");
    hour = intent.getIntExtra("hour", 0);
    minute = intent.getIntExtra("minute", 0);

    Log.w(TAG, "Step 1 ");
    Thread runnable = new Thread() {
        @Override
        public void run() {
  /* do what you need to do */
            Log.w(TAG, "Step 2 ");
  /* get current time */          
            Calendar c = Calendar.getInstance();
             hourNow = c.get(Calendar.HOUR);
             minuteNow = c.get(Calendar.MINUTE);

        //HERE, IT SEEMS THAT IT'S ALWAYS BEFORE hour AND minute

            if(hourNow > hour || (hourNow == hour && minuteNow > minute)) {
                //SEND 
                Log.w(TAG, "RUN ");

                Intent broadcast = new Intent();
                broadcast.setAction(NOTIFICATION_SERVICE);
                sendBroadcast(broadcast);


                handler.removeCallbacks(this);
            }
            else {
                //NOTHING
                i++;
                Log.w(TAG, "NOT YET " + i);
            }
      //REPEAT EVERY 6 SECONDS
            try {
                sleep(6000);
                handler.post(this);

            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
    };

    runnable.start();

}

}

修改

我已经找到了一个小问题,你可以在下面的答案中看到。 如果有人想要完成答案,并提供有关在构建过程中可能出现的问题的更多信息,那么这些信息将会被贬低。 TIA

1 个答案:

答案 0 :(得分:0)

对此的简单解决方案是等待并重新启动Windows。毕竟代码没有缺陷,它只是构建过程中需要一些时间告诉编译器错误不存在的东西:可能在过去的缓存中有一个副本仍然考虑到的错误,我不确定。

也许您可以在我的上一个声明中添加一些信息,发布答案或评论。