3

我正在尝试在动态壁纸中显示当前时间。我正在使用andengine gles2 锚中心来开发它。我所做的是

向场景注册了一个更新处理程序,并使用日历实例读取当前时间并显示它。但它使 GC 继续运行。这是我的代码

    mScene.registerUpdateHandler(new IUpdateHandler() {
        @Override
        public void onUpdate(float pSecondsElapsed) {

            c = Calendar.getInstance();
            yy = c.get(Calendar.YEAR);
            mm = c.get(Calendar.MONTH);
            dd = c.get(Calendar.DAY_OF_MONTH);

            hh = c.get(Calendar.HOUR);
            min = c.get(Calendar.MINUTE);
            amOrpm = c.get(Calendar.AM_PM);
            am_pm = "AM";
            if (amOrpm == 1) {
                am_pm = "PM";
            } else {
                am_pm = "AM";
            }
            displayString = hh + "\n" + min + "\n " + am_pm;
            mText.setText(String.valueOf(displayString));
        }

        @Override
        public void reset() {
        }
    });

我必须遵循什么方法来减少垃圾收集器的运行?

4

1 回答 1

2

您可以使用该Time对象。您可以创建一个Time-instance 并使用它的setToNow()-method 对其进行更新。year然后,您可以从等month字段访问 YEAR、MONTH 等(当您调用该setToNow()方法时它们会更新)。

由于这不会为Calendar每次更新都创建相对繁重的任何新实例,因此您将体验到更少的垃圾收集。

于 2013-03-26T12:52:00.153 回答