Дублирующиеся строки при каждом нажатии на чтение logcat
У меня есть кнопка, и по ее нажатию я отображаю logcat в текстовом представлении.
Событие нажатия кнопки -
findViewById(R.id.button).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Thread mThread = new MonitorLogThread();
mThread.start();
}
Поток, который выполняет выполнение -
private class MonitorLogThread extends Thread
{
public MonitorLogThread()
{
Process process;
try {
process = Runtime.getRuntime().exec("logcat UserFragment:I
LookUpActivity:I IncomingStream:I *:S");
br = new BufferedReader(new InputStreamReader(process.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void run() {
try {
Log.i(TAG, "Getting the logs for Logcat");
logItems.clear();
String line;
// Check if it matches the pattern
while(((line=br.readLine()) != null) && !this.isInterrupted() && isMonitor){
// Filter for your app-line
if (line.contains("ClickedEvents:")){
System.out.println("the line added......"+line);
logItems.add(line);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Проблема в первый раз, когда я нажимаю кнопку линии в textview (and logcat)
показаны как -
the line added......User click event
the line added......User click event success
the line added......User click event done
the line added......User click event gone
Но во второй раз, когда я нажимаю кнопку строки в textview (and logcat)
показаны как -
the line added......User click event
the line added......User click event
the line added......User click event success
the line added......User click event success
the line added......User click event done
the line added......User click event done
the line added......User click event gone
the line added......User click event gone
В третий раз добавляется еще больше и так далее....
Поэтому, сколько раз я нажимаю, это дублирует его.
В чем может быть проблема?
1 ответ
Решение
Вы получаете дубликаты, потому что процесс никогда не разрушается. Попробуй сделать process.destroy()
когда вы закончите, используя его.