3

ライブ壁紙に現在時刻を表示しようとしています。私はそれを開発するためにandenginegles2アンカーセンターを使用しています。私がしたことは

更新ハンドラーをシーンに登録し、カレンダーインスタンスを使用して現在の時刻を読み取り、表示しましたが、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そのメソッドで更新できますsetToNow()year次に、などのフィールドからYEAR、MONTHなどにアクセスできmonthます(メソッドを呼び出すと更新されますsetToNow())。

これにより、更新のたびに比較的重い新しいインスタンスが作成されるわけではないため、Calendarガベージコレクションがはるかに少なくなります。

于 2013-03-26T12:52:00.153 に答える