0

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

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

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();

    }
    }
4

1 回答 1

0

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

于 2019-12-19T13:23:05.060 回答