通过for()循环和Handler不断更新文本

时间:2013-02-08 13:16:28

标签: android loops textview handler freeze

我正在为我做一个测试项目,所以我可以学到更多,所以现在我需要通过TextView循环每250毫秒不断更新for(;;)的文本,它会发生按下按钮后...我的问题是每当我按下该按钮我的应用程序冻结(是的我的按钮完全正常工作,通过以前的测试验证),我使用主线程的处理程序不会受到影响{ {1}}已经......这是我的Button和Handler的代码......

Runnable

如果您需要更多信息请询问:)

2 个答案:

答案 0 :(得分:3)

使用handler.postDelayed每250毫秒不断更新textview,而不是使用for loop来避免冻结当前活动:

Handler handler=new Handler();
B3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                  handler.post(runnable);  
                }

        });
Runnable runnable=new Runnable(){  
  @Override  
    public void run() {  
       String a = Shells.sendSingleCommand("free");
       text.setText(a);
       handler.postDelayed(runnable, 250);  
     }  
 }; 

答案 1 :(得分:0)

Android不允许您在主线程中执行长任务。如果你需要这样做,我建议将for循环和相关代码移动到一个单独的线程中。