2014-04-04 98 views
0

我使用下面的代码来获得CPU的percetange(类似62.5465%),但它似乎需要很长时间来刷新/更新,除非您手动导航到另一个活动,然后回来。有没有办法强制信息每秒更新一次?任何herlp将不胜感激。强制刷新/更新数据读取

private String ReadCPUinfo() 
{ 
    ProcessBuilder cmd; 
    String result=""; 

    try{ 
    String[] args = {"/system/bin/cat", "/proc/cpuinfo"}; 
    cmd = new ProcessBuilder(args); 

    Process process = cmd.start(); 
    InputStream in = process.getInputStream(); 
    byte[] re = new byte[1024]; 
    while(in.read(re) != -1){ 
    System.out.println(new String(re)); 
    result = result + new String(re); 
    } 
    in.close(); 
    } catch(IOException ex){ 
    ex.printStackTrace(); 
    } 
    return result; 
} 

用于在TextView中显示文本。

device.setText(Html.fromHtml( 
"CPU Speed: " + readUsage() * 100 
)); 

回答

4

TimerTimerTask可以使用。

Timer timer = new Timer(); 
MyTimerTask myTimerTask = new MyTimerTask(); 

timer.schedule(myTimerTask, 0, 1000); // 0 Delay, Repeat after 1 second 

MyTimerTask应该是这样的

class MyTimerTask extends TimerTask 
{ 
    public void run() 
    { 
     runOnUiThread(new Runnable() 
     { 
      @Override 
      public void run() 
      { 
       device.setText(Html.fromHtml("CPU Speed: " + readUsage() * 100)); 
      } 
     } 
    } 
} 

编辑

您也可以使用此方法

device.postDelayed(new Runnable() 
{ 
    @Override 
    public void run() 
    { 
     device.setText(Html.fromHtml("CPU Speed: " + readUsage() * 100)); 
    } 
}, 1000);