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后更新..
请帮帮我: - )
祝你好运
马库斯
答案 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..