【问题标题】:Updating CPU frequency on textView (howto?)在 textView 上更新 CPU 频率(如何?)
【发布时间】:2012-07-01 18:07:43
【问题描述】:
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 应用程序打开的整个时间。它没有更新值。

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

请帮帮我:-)

最好的问候

马库斯

【问题讨论】:

    标签: android cpu cpu-speed


    【解决方案1】:

    尝试使用 runOnUiThread 将 Textview 从 Thread 更新为:

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

    【讨论】:

    • 已测试 :) 但强制关闭.. 必须寻找解决方案。
    • 您确定您使用的是 Your_Current_Activity.this.runOnUiThread 而不是 Activity.this.runOnUiThread 吗?
    • cpuinfoActivity.this.runOnUiThread(new Runnable() [...] 我无法回答我的问题,因为我是新用户?eclipse 不显示任何错误,但启动后活动崩溃..跨度>
    • 确保你正在启动 myThread();在 setContentView(R.layout.main);? 之后
    • soooo 找到了解决方案! :) public void run() { TextView CPUMhz = (TextView) findViewById(R.id.CPUMhz); (textView 的声明!现在它工作正常!) TY 伙计们! :)
    猜你喜欢
    • 2018-05-20
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2011-03-02
    • 2018-07-31
    • 2022-08-14
    • 1970-01-01
    相关资源
    最近更新 更多