布尔结果在构造函数中不会更改

时间:2014-10-11 11:06:41

标签: java android timer boolean

我有一个方法可以在发生某些事情时更改布尔变量的值。

for (Message msg : msgs) {
        if (!msgs_array.contains(msg)) {
            Log.d("Chat", "Message : " + msg.getTitle() + ": "
                    + msg.getMessage());
                    msgs_array.add(msg);
            newMsg = true;
            Log.d("Chat", "New Message ? " + newMsg);
        }
    }

我的构造函数中有一个计时器:

    Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Log.d("Chat", "Has New Msg ? " + newMsg);
                }
            });

        }
    }, 2000, 2000);

当条件成立时,我进入了日志猫:新消息?真正 但我的计时器仍将其记录为假..

所以..任何想法? :S

2 个答案:

答案 0 :(得分:0)

嗯,这不能解答您的问题,但我建议您使用handler而不是timertask。 在此处阅读http://www.mopri.de/2010/timertask-bad-do-it-the-android-way-use-a-handler/

你可以使用处理程序来完全复制它: - /

答案 1 :(得分:0)

我认为string comparing正在您的代码中运行,用equals()替换变量。

试试这个,希望有所帮助

for (Message msg : msgs) {
        if (!msg.equals(msgs_array)) {
            Log.d("Chat", "Message : " + msg.getTitle() + ": "
                    + msg.getMessage());
                    msgs_array.add(msg);
            newMsg = true;
            Log.d("Chat", "New Message ? " + newMsg);
        }
    }