Zaimplementowałem logi i są one wyświetlane na ekranie. Ale nawet po utworzeniu wątku dzienniki nie są dynamicznie aktualizowane na ekranie. Nowe dzienniki należy dołączyć po jednej sekundzie. Gdy użytkownik pozostaje na ekranie, dzienniki powinny być wyświetlane na ekranie, ale tak się nie dzieje. Wątek, który utworzyłem, działa dobrze, ponieważ przetestowałem go ze zmienną count. Ale w przypadku dzienników wydaje się, że nie działa.

Pomóż mi, utknąłem tutaj.

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

    }
    }
0
Rana Ibtisam 19 grudzień 2019, 15:47

1 odpowiedź

Korzystaj z LiveData i obserwabli, które są bardzo potężne, a Twoje życie staje się łatwe

0
Sahjad Ansari 19 grudzień 2019, 16:23