在textView上更新CPU频率(howto?)

时间:2012-07-01 18:07:44

标签: android cpu cpu-speed

private String ReadCPUMhz()
    {
     ProcessBuilder cmd;
     String result="";
     int resultshow = 0;

     try{
      String[] args = {"/system/bin/cat", "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq"};
      cmd = new ProcessBuilder(args);

      Process process = cmd.start();
      InputStream in = process.getInputStream();
      byte[] re = new byte[1024];
      while(in.read(re) != -1)
       {
         result = result + new String(re);
       }

      in.close();
     } catch(IOException ex){
      ex.printStackTrace();
     }
     return result;
    }

我使用setText将结果中的值写入textView。 因此它在应用程序启动时读出当前的cpu频率并将其写入此textView。该应用程序显示f.e.应用程序打开的整个时间1200Mhz。它没有更新价值。

如何在1秒或250毫秒后使用Timer或其他方法更新当前值并将其写入textView? 它应显示当前的CPU频率。 F.e。:300Mhz - 1200Mhz ..在1s或250ms后更新..

请帮帮我: - )

祝你好运

马库斯

1 个答案:

答案 0 :(得分:0)

尝试使用runOnUiThread将Threadview中的Textview更新为:

public void myThread(){
        Thread th=new Thread(){

         @Override
         public void run(){
          try
          {

           while(true)
           {

           Thread.sleep(100L); //SET INTERVAL TO UPDATE TEXTVIEW TEXT
           Activity.this.runOnUiThread(new Runnable() {

            @Override
            public void run() {

       String str=ReadCPUMhz();  //CALL YOUR METHOD HERE
            tvnn.setText(str);  SET TEXT HERE
           });
           }
          }catch (InterruptedException e) {
        // TODO: handle exception
       }
         }
        };
        th.start();
       }
//....YOUR CODE
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
myThread();
//YOUR CODE..