使用计时器可能会减慢我的应用程序

时间:2014-08-15 13:42:31

标签: java android performance

我正在编写一个应用程序,其中包含一系列"活动警报"供用户以各种方式进行交互。每个计时器由一个对象表示,该对象包含一个"创建的时间"这表示警报何时出现。我有一个片段向用户显示所有警报,其中每个警报表示为RelativeLayout,其中TextView包含" age"计时器的年龄,通过从当前时间减去的创建时间计算年龄。我的申请要求说明年龄需要每秒计算和更新一次。

这是我的计时器的代码:

final Handler myHandler = new Handler();

    final Runnable myRunnable = new Runnable(){

        public void run()
        {
            alarmDuration.setText("Age: " + tempAlarm.getAge());
        }
    };



    try {
        //This timer is meant to update the time on each Alarm once a second.
        Timer timer = new Timer();

        TimerTask timerTask = new TimerTask() {
            @Override
            public void run() {
                myHandler.post(myRunnable);
            }

        };
        //Schedule the timer to go every second.
        timer.schedule(timerTask, 0, 1000);
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }

每个警报视图都有自己的Handler,Runnable和Timer。这就是我的问题所在:当我显示不到10个这样的计时器时,应用程序似乎运行正常,可以毫无问题地管理更新。但是,我尝试在100个警报的范围内加载某个地方,并且应用程序开始丢帧(如我的控制台中所示)。在配置更改(例如旋转屏幕)时,我在50-60的范围内丢帧。

这是更新这些textView的好方法吗?还是有一种方法可以减少对应用程序的拖累?我的一个想法是可能将所有报警年龄视图的ID放入ArrayList,然后只有一个Handler,Runnable和Timer来更新整个列表。

非常感谢任何其他建议!

0 个答案:

没有答案