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に書き込みます。アプリは、アプリが開かれている間ずっとfe1200Mhzを表示します。値は更新されませんでした。

タイマーまたは他のメソッドを使用して、1秒または250ミリ秒後に現在の値を更新し、それをtextViewに書き込むにはどうすればよいですか?現在のCPU周波数が表示されます。Fe:300Mhz-1200Mhz..1秒または250ms後に更新。

私を助けてください :-)

よろしくお願いします

マーカス

4

1 に答える 1

0

runOnUiThreadを使用して、スレッドから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 に答える