使用Andengine制作动态壁纸,如何最好地显示当前时间?

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() {
        }
    });

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

1个回答

2
你可以使用Time对象。你可以创建一个单一的Time实例,并通过它的setToNow()方法对其进行更新。然后,你可以从yearmonth等字段中访问YEAR、MONTH等内容(当你调用setToNow()方法时,它们会更新)。
由于这不会创建任何新的相对较重的Calendar实例,所以你将遇到更少的垃圾回收问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接