2012-07-01 2 views
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; 
    } 

결과 값을 textView에 쓰려면 setText를 사용했습니다. 그래서 응용 프로그램이 시작되면 현재의 CPU 주파수를 읽고이 textView에 기록합니다. 앱에 f.e가 표시됩니다. 1200Mhz 앱이 열리는 전체 시간. 값을 업데이트하지 않았습니다.textView에서 CPU 빈도를 업데이트 중

타이머 또는 다른 방법을 사용하여 1s 또는 250ms 후에 현재 값을 업데이트하고 textView에 쓰려면 어떻게해야합니까? 현재 CPU 주파수를 표시해야합니다. 철 : 300Mhz 제품 - 1200MHz의 ... 1 초 또는 250 밀리 초 후 업데이트 ..

는 다음과 같이 스레드에서 텍스트 뷰를 업데이트 runOnUiThread를 사용해보십시오

안부

:-)

마커스

답변

0

를 도와주세요 :

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.. 
+0

테스트되었습니다. :) 강제 종료. 해결 방법을 찾아야합니다. – freibergisch

+0

plz 수정 코드가있는 게시물을 업데이트하십시오. –

+0

Activity.this.runOnUiThread 대신 Your_Current_Activity.this.runOnUiThread를 사용 하시겠습니까? –