2
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。该应用程序在整个打开应用程序时显示 fe 1200Mhz。它没有更新值。

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

请帮我 :-)

此致

马库斯

4

1 回答 1

0

尝试使用runOnUiThread从 Thread 更新 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..
于 2012-07-01T18:12:57.170 回答