Android - 定期有效地安排任务?

标签 android performance

我有这段代码可以每隔一段时间安排一个任务:

final Handler handler = new Handler(); 
Runnable update = new Runnable() { 
    @Override 
    public void run() { 
        try{
            runOnUiThread(new Runnable(){
                public void run(){
                    lbl.setText(info);
                    cpb.setProgress(Float.valueOf(textInfo);
                }
            });

            handler.postDelayed(this, 1000);
        }
        catch (Exception e) {
            // TODO: handle exception
        }
    } 
};

我想不断更新 UI(每秒等)。代码有效,但是,界面开始滞后。代码迭代任务几次后,界面停止响应。

有什么方法可以安排任务定期重复,而不会使内存过载并且界面不会滞后。

最佳答案

假设 lbl 是一个 TextViewcpb 是一个 ProgressBar,您的代码不会明显滞后于任何设备事实上。问题出在其他地方。此外,您似乎错过了 (Float.valueOf(textInfo);

顺便说一句,据我所知,您不必要地在 Runnable 中使用了 runOnUiThread。当您创建一个 new Handler() 时,它会隐式链接到调用线程的 Looper,我假设它是 UI 线程。在这种情况下,update Runnable 将已经在 UI 线程上运行。编辑:这不应该是记录滞后的原因,因为 iirc runOnUiThread 检查它是否正在 UI 线程上执行,然后立即运行它,而不做另一篇文章。

关于Android - 定期有效地安排任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25095775/

相关文章:

java - Sharedpreferences 保存后返回空值

android - 如何替换mutableListOf中的索引值?

JavaScript、Ajax : How to visualize Boomerang. js 结果?

python - 优雅地完成对两个不等长数组的并行操作

java - 如何在 Android 应用程序中集成 Google Ads?

android - 谷歌云语音 API : Real Time recognition via REST

java - 分配免费游戏

java - Long.reverse(long) 方法有什么用?

.net - system.diagnostics 跟踪如何影响 .net 性能?

python - 将数据帧值与同一行中的特定列进行比较