【问题标题】:Problem with dynamically updating text view动态更新文本视图的问题
【发布时间】:2019-12-19 12:47:28
【问题描述】:

我已经实现了日志,它们正在屏幕上显示。但即使在创建线程之后,日志也不会在屏幕上动态更新。新日志应在一秒钟后附加。当用户停留在屏幕上时,日志应该继续显示在屏幕上,但它没有发生。我创建的线程工作正常,因为我已经使用计数变量对其进行了测试。但是对于日志,它似乎不起作用。

帮帮我,我被困在这里了。

package com.example.logreader;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler; 
import android.text.method.ScrollingMovementMethod;
import android.widget.TextView;

public class MainActivity extends Activity {

private int mInterval = 100; // 5 seconds by default, can be changed later
        private Handler mHandler;
        int count;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView tv = (TextView)findViewById(R.id.textView);
        Thread t=new Thread(){


            @Override
            public void run(){

                while(!isInterrupted()){

                    try {
                        Thread.sleep(1000);  //1000ms = 1 sec

                        runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                try {
                                    Process process = Runtime.getRuntime().exec("logcat -d");
                                    BufferedReader bufferedReader = new BufferedReader(
                                            new InputStreamReader(process.getInputStream()));

                                    StringBuilder log=new StringBuilder();
                                    String line = "";
                                    while ((line = bufferedReader.readLine()) != null) {
                                        log.append(line);
                                    }
                                    tv.setText(log.toString());
                                    tv.setMovementMethod(new ScrollingMovementMethod());

                                } catch (IOException e) {
                                }

                            }
                        });

                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                }
            }
        };

        t.start();

    }
    }

【问题讨论】:

    标签: android logging logcat android-log


    【解决方案1】:

    使用 LiveData 和 observables 它非常强大,你的生活变得轻松

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-24
      • 1970-01-01
      • 1970-01-01
      • 2015-03-22
      相关资源
      最近更新 更多