导致大量GC的任务

时间:2011-08-14 06:09:52

标签: android multithreading performance media-player handler

我已经创建了一个线程,这样我就可以在不打扰用户界面的情况下获取MediaPlayer的当前位置但是我看到在计时器运行时会收到大量的垃圾回收,这是正常的吗?

为了避免发送垃圾邮件的风险,是否有其他人知道更好的方式来显示更有效的MediaPlayer的位置?

private void processThread() {

        final MediaPlayer MP;
        MP = MediaPlayer.create(this, R.raw.sleepaway);
        MP.start();

        new Thread(){

            public void run(){              


                handler.post(new Runnable(){

                    @Override
                    public void run() {


                        myText.setText(getTimeString(MP.getCurrentPosition()));    
                        handler.postDelayed(this,10);

                    }  

                });


            }

        }.start();

    }

我收到的消息大约是每秒三次:

08-14 05:44:27.385: DEBUG/dalvikvm(32100): GC freed 10820 objects / 524656 bytes in 75ms

1 个答案:

答案 0 :(得分:3)

您正在创建的主题完全无用,只需执行帖子(Runnable)。此外,您正在使用postDelayed()创建一个无限的“循环”。